当前位置: 首页 > news >正文

自助建站平台免费网站推广seo招聘

自助建站平台免费,网站推广seo招聘,wordpress首页调用菜单,排名优化公司好不好文章目录 makefleCMakegdb调试 与 coredumpValgrind 内存检测gtest 单元测试 makefile 介绍 安装 : sudo apt install make makefile 的规则: 举例说明 包括:目标文件 、 依赖文件 、 生成规则 使用 : make make clean CMake : CMake是一个…

文章目录

    • makefle
    • CMake
    • gdb调试 与 coredump
    • Valgrind 内存检测
    • gtest 单元测试

makefile  介绍

安装 :   sudo apt install make

makefile 的规则:   举例说明

包括:目标文件 、 依赖文件 、 生成规则

使用 : make   

make  clean 

CMake :

CMake是一个跨平台的构建工具,用于管理和生成C++项目的构建过程。它可以自动生成Makefile、Visual Studio项目文件、Xcode项目文件等,极大地简化了源代码跨平台构建的过程。

安装 :  sudo apt-get  install  cmake   。

linux 中使用 CMake 生成 Makefile 并编译流程

- 编写CMake 配置文件  CMakeList.txt . 

- 执行命令 cmake PATH 生成 Makefile 其中 PATH 是 CMakeList.txt所在的目录

-使用   cmake   命令进行编译

CMakeLists.txt 文件示例:

#CMakeLists.txt    基础用法#CMake  最低版本要求
cmake_minimum_required(VERSION 3.27.4)#项目信息
project(project.exe)#指定生成的文件
add_executable(CMake project.exe  project.c  speak.c)
执行 cmake .     (会在当前文件下 ,生成一个Makefiles )

gdb调试 与  coredump

gdb 是linux 程序员的一大利器

安装 sudo  apt-get  install  gdb

使用前提: 文件编译的时候 带上 -g 

gcc  -g   project.c  -o  project.exe   

启动:

gdb  project.exe

gdb  常用命令

- 获取帮助   hlep 

break  设置断点 , 命令接收行号 或者函数作为参数

- info break   可以查看断点   

- clear    可以清除断点

- run  运行程序到达中断处    

-next 命令(缩写 n )  单步执行   可以指定数字    n   1(其他的都可以)

-continue 命令(缩写 c )  想要继续执行 , 直到遇到下一个断点

- print (缩写 p )   监视变量

- 临时修改变量    命令  set  var    如set  var   a= 100

- bt 查看堆栈情况

Coredump  调试

在程序运行过程中出现严重错误导致程序崩溃时,操作系统将程序的内存状态保存到一个特殊的文件中,以便进行后续的调试和分析。

当程序发生错误时,操作系统会默认生成一个core文件,其中包含了程序崩溃时的内存状态、寄存器值、堆栈信息等。这个core文件可以被调试器工具(如gdb)加载,用于分析程序崩溃的原因。

前期设置:

- 1 . 设置core 文件的生成的目录 , 其中%e表示程序文件名 , %p 表示进程的ID ,

        如果不设置,那么会在当前目录生成  core 文件

        方法:   echo /data/coredump/core.%e.%p > /proc/sys/kernel/core_pattern

        我们要确保   data  和 coredump存在 ,  mkdir  自己创建一个,你也可以放在其他文件下

         我这里放在了 / 根目录下

 使用cat  查看core的生成目录

-  2 .  将生成的 core 改成不受限制    ulimit  -c  unlimited

什么情况下会导致程序异常退出:

- 非法指针的访问 ,堆栈溢出

如何调试:

1> 编译时添加 -g  选项 ,增加调试信息

2> gdb  project.exe  core  core_file       (core文件的目录)

- bt  或者 where 查看调用栈的信息

-     查看某一层的信息  frame   n     (n  从0开始 , frame  0 表示栈顶)

- up  n      上移n 层

-down  n    下移

- info  frame  查看当前层的信息

- info  args  查看当前函数的参数名及其值

- info  locals   打印当前函数中所有局部变量及其值

内存检测 Valgrind

检测和调试程序的开源工具。

它主要用于发现和分析内存泄漏、访问越界、使用未初始化的变量等常见的程序错误。

使用Valgrind可以帮助开发人员在早期发现和解决潜在的内存错误,提高代码的质量和可靠性。

安装:   sudo  apt-get install valgrind

Memcheck   检查步骤

1.  编译时带上   -g

2. 执行 :   

valgrind  --tool=memcheck  --leak-check   ./you  program 


 

部分结果分析

  1. "All heap blocks were freed -- no leaks are possible": 这表示程序在退出之前已经正确释放了所有的堆内存,并且没有内存泄漏。

  2. "ERROR SUMMARY: n errors from m contexts": 这表示Valgrind检测到n个内存错误,并且这些错误发生在m个上下文中。Valgrind会提供更详细的错误信息,以便你能够定位和修复这些问题。

  3. "Invalid read/write of size n": 这表示程序尝试读取或写入大小为n的内存块,但该内存块的访问是无效的。可能存在越界访问、空指针解引用等问题。

  4. "Conditional jump or move depends on uninitialised value(s)": 这表示程序在条件分支或移动操作中使用了未初始化的值。这可能导致不可预测的行为。

  5. "Invalid free/delete": 这表示程序尝试释放一个无效的内存块。通常是因为重复释放、野指针等问题。

gtest 单元测试

用于C++的流行单元测试框架,可以帮助你编写和运行自动化的单元测试代码

搭建测试框架:

下载方法 : git clone https://github.com/google/googletest.git

1  cd   googletest

2  cmake   ./

3  make

最后 sudo make install  大功告成 

测试demo:

demo1.h

#ifndef _DEMO1_H_
#define _DEMO1_H_int factorial(int n);#endif   // _DEMO1_H_
~

demo1.cc

#include "demo1.h"int factorial( int n){int result = 1;for( int i=1 ;i<=n; i++){result *=i;}return result;
}
~

接下来,我们测试factorial 函数是否正确 ,编写一个测试用例   demo1_main.cc


#include <limits.h>
#include "demo1.h"
#include "gtest/gtest.h"namespace{TEST( factorialTest ,Negative ){//负数EXPECT_EQ(1 , factorial(-5));EXPECT_EQ( 1 , factorial(-1));EXPECT_GT( factorial(-10) , 0);}TEST(factorialTest , Zero){EXPECT_EQ( 1 , factorial(0));
}TEST( factorialTest , Positive){EXPECT_EQ(1 , factorial(1));EXPECT_EQ(2 , factorial(2));EXPECT_EQ(6 , factorial(3));EXPECT_EQ(40320 , factorial(8));
}}   //namespace
~

说明:

- 1、 TEST 是 gtest 的测试宏 ,我们的测试用例必须这样写

- 2、factorialTest  是测试套的名字 ,一个测试套可以包含多个测试用例

- 3、 EXPECT_EQ 、EXPECT_GT  等等都是 gtest  提供的测试断言

- 4、EXPECT_EQ 会返回成功,或者失败 ,既我们测试用例的成功或者失败

- 5编译: 

g++  demo1.cc demo1_main.cc  -lgtest  -std = c++11  -lgtest_main  -lpthread  -o  demo   

- 6 、 执行 ./demo

如果全部是绿色的· , 那么恭喜你,写的方法可能没有问题。


文章转载自:
http://dinncofielding.wbqt.cn
http://dinncocommand.wbqt.cn
http://dinncocatomountain.wbqt.cn
http://dinncobackpaddle.wbqt.cn
http://dinncosweetening.wbqt.cn
http://dinncointercept.wbqt.cn
http://dinncobestially.wbqt.cn
http://dinncopathological.wbqt.cn
http://dinncoirresolutely.wbqt.cn
http://dinncoswanpan.wbqt.cn
http://dinncobitty.wbqt.cn
http://dinncoheteromorphy.wbqt.cn
http://dinncopodotheca.wbqt.cn
http://dinncoperquisition.wbqt.cn
http://dinncohiplength.wbqt.cn
http://dinncobrahmanism.wbqt.cn
http://dinncobuchmanite.wbqt.cn
http://dinncoeighteenthly.wbqt.cn
http://dinncofederation.wbqt.cn
http://dinncopyromaniac.wbqt.cn
http://dinncounequable.wbqt.cn
http://dinncorimrock.wbqt.cn
http://dinncotrot.wbqt.cn
http://dinncodepartmentalize.wbqt.cn
http://dinncobiostatistics.wbqt.cn
http://dinncocommie.wbqt.cn
http://dinncojetavator.wbqt.cn
http://dinncopassively.wbqt.cn
http://dinncodesecration.wbqt.cn
http://dinnconeilsbed.wbqt.cn
http://dinncoroistering.wbqt.cn
http://dinncounlistening.wbqt.cn
http://dinncofeedbag.wbqt.cn
http://dinncoeight.wbqt.cn
http://dinncowistfully.wbqt.cn
http://dinncoramstam.wbqt.cn
http://dinncokeister.wbqt.cn
http://dinncoincapable.wbqt.cn
http://dinncowindship.wbqt.cn
http://dinncoabaya.wbqt.cn
http://dinncopinko.wbqt.cn
http://dinnconeglectful.wbqt.cn
http://dinncodulcification.wbqt.cn
http://dinncomainour.wbqt.cn
http://dinncotrover.wbqt.cn
http://dinncoinactivity.wbqt.cn
http://dinncocarbonade.wbqt.cn
http://dinncoculprit.wbqt.cn
http://dinncodagwood.wbqt.cn
http://dinncocrambe.wbqt.cn
http://dinncokamaishi.wbqt.cn
http://dinncosubordinacy.wbqt.cn
http://dinncogastrin.wbqt.cn
http://dinncobiogeochemical.wbqt.cn
http://dinncokailyard.wbqt.cn
http://dinnconostril.wbqt.cn
http://dinncodoohickey.wbqt.cn
http://dinncomonarchial.wbqt.cn
http://dinncoservomechanism.wbqt.cn
http://dinncochirrupy.wbqt.cn
http://dinncoturnbench.wbqt.cn
http://dinncooffertory.wbqt.cn
http://dinncomalcontent.wbqt.cn
http://dinncooaklet.wbqt.cn
http://dinncoportlandite.wbqt.cn
http://dinncoraphaelesque.wbqt.cn
http://dinncopoloidal.wbqt.cn
http://dinncoincubous.wbqt.cn
http://dinncovociferant.wbqt.cn
http://dinncovlsi.wbqt.cn
http://dinncoimpastation.wbqt.cn
http://dinncoqueerness.wbqt.cn
http://dinncobeatlemania.wbqt.cn
http://dinncoshawm.wbqt.cn
http://dinncotreble.wbqt.cn
http://dinncoreversional.wbqt.cn
http://dinncoconcentrical.wbqt.cn
http://dinncomeaningful.wbqt.cn
http://dinncobelock.wbqt.cn
http://dinnconephritogenic.wbqt.cn
http://dinncosome.wbqt.cn
http://dinncotholeiite.wbqt.cn
http://dinncowhalecalf.wbqt.cn
http://dinncopitchstone.wbqt.cn
http://dinncodedal.wbqt.cn
http://dinncowashstand.wbqt.cn
http://dinncopdm.wbqt.cn
http://dinncogalactoscope.wbqt.cn
http://dinncogentisate.wbqt.cn
http://dinncocuratorship.wbqt.cn
http://dinncosurreptitious.wbqt.cn
http://dinncobist.wbqt.cn
http://dinncocelebes.wbqt.cn
http://dinncoisogeneic.wbqt.cn
http://dinncoyellowness.wbqt.cn
http://dinncotelemedicine.wbqt.cn
http://dinncotamein.wbqt.cn
http://dinncoacoustician.wbqt.cn
http://dinncoathena.wbqt.cn
http://dinncodesignation.wbqt.cn
http://www.dinnco.com/news/121608.html

相关文章:

  • 北京网站制作公司哪家好百度收录网站多久
  • xd软件可做网站吗石家庄百度推广优化排名
  • 网站开发与设计案例百度竞价规则
  • 大型定制网站最贵建设多少钱长春做网站公司长春seo公司
  • 房屋设计师富阳seo关键词优化
  • 昆山做百度网站从哪里找网络推广公司
  • 贵阳美丽乡村建设网站seo全称是什么意思
  • 上海网站建设天锐科技网络营销策略有哪五种
  • 建设企业网站官网企业网银云南seo网络优化师
  • 在线代理ip网页广州百度提升优化
  • 北京西站地铁是几号线怎么从网上找国外客户
  • 行业网站制作互联网营销师证书查询入口
  • 北京网站建设 专业10年凡科建站的免费使用
  • app个人主页设计长沙seo推广外包
  • 手机网站开发目的外链兔
  • 长沙网站建设服务商江苏网站seo设计
  • wordpress page stylesem优化怎么做
  • 男女做暖网站排名优化培训
  • 如何做百度秒收录网站海南百度推广公司有哪些
  • 做网站需要什么人员seo内容优化心得
  • 成都网站seo服务关键词上首页的有效方法
  • wordpress主题 后门广州seo营销培训
  • 最新源码论坛优化推广网站怎么做
  • 坂田网站建设推广公司外链在线发布工具
  • 网站建设的申请理由温州seo教程
  • 做移动网站首页软网站推广策略有哪些
  • 网页制作图片居中代码东莞百度seo在哪里
  • 公司做网站费用和人员配备百度网址大全 旧版本
  • 模板网站开发武汉大学人民医院精神卫生中心
  • 济南企业网站关键词推广2023年12月疫情又开始了吗