如何在一行中运行多个命令?

时间:2014-07-07 15:59:37

标签: linux debugging gdb

我正在尝试在一行上运行多个命令,例如

(gdb) info threads; c
Args must be numbers or '$' variables.

但看起来gdb不支持。有什么想法吗?

3 个答案:

答案 0 :(得分:14)

使用define命令定义自己的命令:

(gdb) define mycommand
Type commands for definition of "mycommand".
End with a line saying just "end".
>info threads
>c
>end
(gdb) mycommand

有关详细信息,请参阅:https://sourceware.org/gdb/onlinedocs/gdb/Define.html#Define

答案 1 :(得分:2)

gdb没有此语法。所以,你不能这样做。

如果您希望能够运行预设序列,请参阅“define”命令。

答案 2 :(得分:0)

你可以通过首先放置断点然后在GDB中使用“命令来实现它,并提到当这个特定断点命中时应该执行的所有命令。这样我们就可以自动化我们的调试会话同样。

(gdb)帮助命令

设置命中断点时要执行的命令。 在“命令”之后将断点号作为参数。 没有参数,目标断点是最后一个断点。 命令本身从下一行开始。 键入包含“end”的行以指示它们的结尾。 将“沉默”作为使断点保持沉默的第一条线; 然后在命中时不会打印输出,除了打印的命令。

(gdb) break main
Breakpoint 1 at 0x40113e: file thread.cpp, line 19.
(gdb) info b
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x000000000040113e in main() at thread.cpp:19
(gdb) commands 1
Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
>info locals
>print argc
>print argv
>backtrace
>end
(gdb) info b
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x000000000040113e in main() at thread.cpp:19
        info locals
        print argc
        print argv
        backtrace
(gdb)