gdb的commands命令可以让程序在每次到达断点时自动执行一组命令,以帮助程序员更好观察程序运行过程,定位程序运行问题。
具体用法如下,此处以在gdb查看断点调用栈为例:
(gdb)b xxx
(gdb)commands
>bt
>c
>end
(gdb)c
执行以上设置后,程序每运行到xxx位置时,会触发commands指令,从而自动执行bt、c、end三个指令,之后程序会自动往下走,不影响其运行。
使用效果如下:
如果有多个断点,可以在commands后面跟上断点号来指定,如commands xx。
在gdb运行过程中经常出现: --Type to continue, or q to quit. 程序就被阻塞了,这是因为打印的信息太多,自动回显无法显示完整,需要人手动敲一下回车才能继续。可通过设置height解决,如下。
(gdb)set height 0
与commands命令结合使用可以在commands中加入很多个调试指令,而不用担心信息显示不全。