makefile和gdb调试

gdb调试

gdb是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具,其中对于gdb的调试是所有在Linux操作系统下进行开发人员必备的知识
程序示例:

#只有添加 -g选项才能表示能够调试
g++ -g ./pointer1.cpp -o ./pointer1.out
gdb ./pointer1.out #指定pointer1.out为需要调试的程序
gbd l 表示显示源代码
gdb start表示开始调试
p a 表示查看 a 的值
n 表示下一步
s 表示进入函数查看
bt 查看函数栈
f 1 表示跳入栈1
q 退出调试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-efTFL4HX-1608474392496)(Untitled.assets/image-20201220222344303.png)]

一般我们将内存分为:堆区、栈区、全局区、代码区、常量区,各个区域存放的内容:

栈区:在程序中所创建的局部变量、参数、数组、指针等,当程序执行完后,将释放所占用的该块内存。

堆区:该片区域中存放着我们手工申请的内容,如:Malloc、new所创建。

全局区:全局变量、静态变量,在我们程序执行完之后将自动释放所占用的内存。

代码区:存放着函数体的二进制代码。

常量区:包含着整形常量、字符串常量,该区域内容不能被修改。

makeFile编写

一个大型工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,能够清晰的指定,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。

1.1 make命令的使用

make[option] [target]

-Cdir :在读入makefile之前,把路径切换到dir下。如果同时使用几个‘-C’选项,则eachis interpreted relative to the previous one。

-d :在正常处理后打印调试信息。

-e :设置环境变量的优先权高于makefile文件变量的优先权。

-ffile :将file设置为makefile文件。

-i :忽略在执行重建文件命令时产生的所有错误。

-Idir :指定搜寻makefile文件的路径。如果同时使用几个‘-I’选项,则按照次序搜寻这些路径。

-k :在出现错误后,尽可能的继续执行。也就是说当一个目标创建失败后,所有依靠它的目标文件将不能重建,而这些目标的其它依赖则可继续处理。

-n :打印要执行的命令,但却不执行它们。

-ofile :即使文件file比它的依赖旧,也不重建该文件。

-p :打印数据库,其中的数据来自读入makefile文件的结果;打印之后执行。

make –qp 打印数据库后不执行。

make –p –f/dev/null 打印预定义的规则和变量的数据库。

-q :不打印也不执行命令。如果所有目标都已经更新到最新,make的退出状态是0;如果一部分需要更新,退出状态是1;如果make遇到错误,退出状态是2。

-r :禁止使用预定义的隐含规则,同时也清除了缺省的后缀列表和后缀规则。注意缺省的变量仍然有效。

-R :禁止使用内建的规则变量。‘-R’自动使‘-r’生效。

-s :不回显执行的命令。

-S :使‘-k’失效。除非在递归调用make时,通过变量MAKEFLAGS从上层make继承‘-k’,或环境中设置了选项‘-k’,否则没有必要使用该选项。

-t :标记文件已经更新到最新,但实际却没有更新它们。

-w :打印执行makefile文件时涉及的所有工作目录。

-Wfile :Pretendthat the file has been just modified。在和‘-n’一起使用时,将表明更改该文件会发生什么。如果没有和‘-n’一起使用,那么它和在运行make之前对该文件使用touch命令的结果几乎一样,但使用该选项make只是在想象中更改该文件的时间戳。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值