美文网首页软件调试的艺术
第二章 停下来环顾程序

第二章 停下来环顾程序

作者: oak__ | 来源:发表于2020-05-05 00:19 被阅读0次
暂停机制

1、断点
2、监视点
3、捕获点
以上都可以暂停程序,但是其本意有区别, 都可以用delete删除。

断点概念

程序停止点

跟踪断点

1、查看断点列表
info breakpoints

设置断点

1、break function
2、break filename:line number
3、break filename:function

断点的持久性

gdb如果不退出,在修改代码后再执行run,gdb能够感知到代码已修改,并适应新的版本。

删除和禁用断点
删除断点

1、delete breakpoint_list_id
2、 delete --删除所有断点
3、clear 清楚gdb将执行的下一个断点。
4、clear function、clear filename:function、clear linenumber、clear filename:funciton 清楚指定位置的断点。

恢复执行

1、step和next , step会进入函数,next跳过函数执行。 注意step不会在不具有调试信息的代码。
2、continue 或者continue number , number为忽略几个断点,没有number为跳过1个断点。
3、finish 直接跳到函数尾部。
4、until 退出循环

条件断点

break break-args if condition
break-args 可以为设置断点的各种方法

断点命令集

commands breakpoint-number
...
commands
...
ends
每当进入断点,将会执行command之间的内容。
1、命令会一直打印一些附属信息,如果不打印,可以在命令集开头输入slient。
2、每当进入相同断点就会停止,可以在ends之前添加continue
另外如果多个command中有相同的命令,可以采用define 将相同点抽出,在每个command中使用。
可以用show user 列出所有的宏定义。

监视点

命令:
watch i
或者带复杂表达式:
watch (i | j >12) ...
注意监视的是指监视的点的值/表达时有变化,并且退出监视的变量作用域将会自动删除监视点断点。
监视值变化对于当值赋值给指针,通过指针来修改该值也能监视到!注意这个隐含的特性。

表达式

表达式可以包含很多中
1、gdb 方便变量 方便变量: gdb自己定义的变量。
2、程序中的任何在作用域内的变量。
3、任何种类的字符串、数值或者字符常量。
4、预处理器宏 (指语言中的宏, 但是gcc 需要加 -g3
5、条件、函数调用、类型强制转换和所有语言定义的运算符。

相关文章

  • 第二章 停下来环顾程序

    暂停机制 1、断点2、监视点3、捕获点以上都可以暂停程序,但是其本意有区别, 都可以用delete删除。 断点概念...

  • 环顾

    今天看了一资深大咖诗文,获赞数万,其文自然朴实。 然朴实到毫无韵律可言,且多为平辅直叙,收尾总无升华,简直是狗屁诗...

  • 8.23

    心之所向,必定停下来环顾四周,看看曾记得辉煌。

  • 山城环顾

  • 张望环顾

    poor is will passed,i'm going to rich fast,so enjoy pre...

  • 众砂环顾

    地理风水释迷.之四 众砂环顾聚生气 穴前众砂环顾,众水归堂,犹如万邦来贡,诸王...

  • 环顾一圈

    新的地方,小心翼翼的试试看。还不太适应这个环境,好像到了一个新家的猫。

  • 环顾昔日的武汉~

    武汉一个承载我近二十年的地方,从出生到长大,在到我独自一人背起行囊步入社会以后,回来也就只有过年的时候有空回来...

  • 第二章 进程的描述与控制

    第二章 进程的描述与控制 前趋图和程序执行 程序的顺序执行 单道程序设计 -> 程序的顺序执行 在程序顺序执行时,...

  • 献给每一个被太宰治写出来的你

    我大概前前后后花了很长的时间来读《人间失格》,每读几页,便会感到胸口沉闷无比,停下来,环顾四周,便会接着读...

网友评论

    本文标题:第二章 停下来环顾程序

    本文链接:https://www.haomeiwen.com/subject/cyxpghtx.html