GDB学习笔记(1)

最近通过《软件调试的艺术》学习GDB,书刚读了大概三分之一,这里先记一些笔记
:-)

缩写

short full
b break
i b info break
c continue
r run
at attach
s step
n next
p print
bt backtrace

基本操作

断点

b position
position可以是 filename:line filename:function
filename可以不指明,gdb总有一个焦点文件,刚启动时焦点文件是main函数所在的文件,当程序运行时,焦点文件是当前执行代码所在的文件,也可以通过 list filename:functionname来设定焦点。

断点命令:

command breakPointNumber,对编号为breakPointNumber的断点设置命令,以end结尾,执行到此断点时,命令会执行,比如打印变量:

printf(“at break point 3,
           i = %d,j = %d,k = %d\n”,
           i,j,k) //括号可有可无

一些命令,感觉用处不大。。。

  • define 定义宏,可带最多十个参数  
    
    define PRINT_AND_GO
    xxxxx(说明)
    >printf   $arg1,$arg0
    >continue
    >end
    
-    `show user` :   列出所有宏  
-    `silent` :    不输出信息  
          
## 监视点
wathc `value`  
watch `expession`  
`expression`是 **当前程序语言风格** 的条件表达式,比如 (i>0)&&(j==2)  
当`value`变化或`expression`成立时,程序中断。  
设置监视点时必须保证监视变量在当前程序指针所在位子有效,即对已局部变量,必须保证程序指针停留在局部变量所在函数,所以一般在要函数入口处加一个断点,然后才能设置函数内变量的监视点。  
##条件断点
- 设置条件断点  
   b  `position`  if  (`expression`)  
   `expression`外的括号可有可无  
- 将已有断电设置为条件断点  
   condition `breakPointNumber` if (`expression`)  
   `breakPointNUmber`用 info breakpoint(i b)查看  
   
   
## 继续执行  
-    c/continue 继续执行到下个断点  
-    fin/finsh  继续执行到此函数结束
-    u/until    继续执行到循环结束 
*当然,断点对 `fin/u` 依然有效*
*u 可带位置参数:u `position` * 
-    s/step     执行下一条语句,会进入函数  
-    n/next     执行下一条语句,不会进入函数  
*s/n可带步数参数: s 4*
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,385评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,159评论 19 139
  • 转载 与调试器共舞 - LLDB 的华尔兹: https://objccn.io/issue-19-2/ 推荐:i...
    F麦子阅读 8,649评论 0 10
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,419评论 30 472
  • 最近由于工作很忙,心情也变得有些急躁。但在外面,我们总会压抑自己的情绪,在家人面前,也许我们会让自己的情绪释放出...
    天真的风筝阅读 1,855评论 0 0

友情链接更多精彩内容