《软件调试的艺术》读书笔记

以下部分是再读《软件调试的艺术》一书过程中记下的部分读书笔记,因为只看了和GDB有关的方法,所以只有GDB命令


gdbGUI调试之间取折中的方法,TUI(terminal user interface

为了在tui模式运行gdb,在gdb命令上加入-tui

或者在gdb中使用ctrl+x+a组合键(进入与退出)

Tui:   * 表示断点

> 表示当前代码行

与tui相同类型的gdb界面,CGDB

 

gdb调试命令

run 命令运行程序

break + 行号(函数名) 设置断点

break + filename:line_number/function

break source.c:35

condition + num + 条件 断点有效的条件(将正常断点转变为条件断点)

删除条件 cond + num

详见本书67页

break break-args if (condition) 增加条件断点

info breakpoints查看断点信息

delate + 1 3 4 删除 1 3 4 断点

tbreak 临时断点,只在第一次到达时有效,具体用法同上

clear + 行号 删除下一个将要执行的断点

clear + function / filename:function/line_number

disable + 禁用断点

enalble + 启用断点

enable once + 启用一次断点

next 执行下一行

step 同上,但是会进入函数

continue 继续执行,直到遇到断点

continue + 忽略接下来的num个断点

finish 执行完当前函数

until 执行完当前函数(如果有断点则进入断点)

 

print + 打印当前变量值

watch + 设置监视点当指定变量改变时暂定程序执行

 

frame + 查看以前的栈帧

backtrace 现实整个栈,当前存在的所有帧的集合

up

down 上下移动栈的位置

 

command 使用断点命令列表

printf 用法同C语言

silent 减少输出(需要时命令列表中的第一个)

define 定义宏

show user 得到所有宏的列表

continue 在执行完命令列表后 继续执行程序(需要是最后一个命令)

 

help breakpoints 查看breakpoints的帮助文档

 

 

 

break 30 if num=1,    顾名思义

 

 

gdb <文件名> -tui 运行<文件名>并且启动terminal usr interface

在gcc调试中,需要-g选项让编译器将符号表,保存在省城的可执行文件中,这个步骤在使用gdb调试时是必要的。

 

在重新编译代码时,可以不退出GDB,断点会保留

 

gdb的启动文件默认名为 .gdbinit 存放于主目录中

但是也可以通过,gdb-command=z x 命令来在可执行文件x上运行GDB,同时从文件z中读取命令

 

gdb的三种暂定机制

  1. 断点
  2. 监视点  //特定值发生变化时
  3. 捕获点  //特定事件发生的时候

你可能感兴趣的:(Linux)