gdb commands命令用法

gdb commands命令用法

基本原理:
设置断点,使用 command 命令设置断点的执行命令
例如:在断点 1 处,打印 ret 变量的值。

 //设置断点
(gdb) b rx_data
Breakpoint 1 at 0xffffffffa02cccf8: file drivers/target/iscsi/iscsi_target_util.c, line 1347.
(gdb) commands
Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
/*输入当运行到断点时想执行的命令(单个或多个),输入end表示命令输入完成
例子中表示,打印c.iov的值,以及继续执行,两条命令*/
>p c.iov
>c
>end
/*设置完成后,输入info br,会出现类似以下的提示*/
(gdb) info br
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0xffffffffa02cccf8 in rx_data at drivers/target/iscsi/iscsi_target_util.c:1347
        p c.iov
        c
/*如果有多个断点,需要设置不同断点被断住时自动执行的命令,则可输入commands num实现设置,例如:*/
(gdb) commands 1
Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
>p c.type
>c
>end
/*结果如下*/
(gdb)info br
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0xffffffffa02cccf8 in rx_data at drivers/target/iscsi/iscsi_target_util.c:1347
        p c.type
        c
/*如果想清空断点的命令,输入commands num后,直接输入end即可*/
(gdb)commands 1
>end
(gdb)info br
(gdb)info br
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0xffffffffa02cccf8 in rx_data at drivers/target/iscsi/iscsi_target_util.c:1347
/*在运行过程中经常出现: --Type  to continue, or q to quit. 程序就被阻塞了,需要人手动敲一下回车才能继续。可通过设置height解决*/
(gdb)set height 0

另外,在/etc/gdb/gdbinit中,可以设置一些启动的参数,比如可以将上面的命令set height 0写入文件内,则启动后,会自动避免阻塞问题

# System-wide GDB initialization file.
set print pretty
set height 0

你可能感兴趣的:(笔记)