我想编写一个脚本(在某些条件下)将执行gdb并自动运行一些带有一些参数Y的程序X.一旦程序执行完毕,用户应该保持在gdb的提示符下,直到他/她显式退出它.
执行此操作的一种方法是让脚本将run命令加参数Y输出到某个文件F,然后让脚本调用gdb,如下所示:
gdb X < F
Run Code Online (Sandbox Code Playgroud)
但有没有办法在不引入临时文件的情况下执行此操作?
谢谢.
Nat*_*man 85
给定程序X和参数列表,最简单的方法a b c:
X a b c
Run Code Online (Sandbox Code Playgroud)
是使用gdb的--args选项,如下:
gdb --args X a b c
Run Code Online (Sandbox Code Playgroud)
gdb --help有这个说--args:
--args Arguments after executable-file are passed to inferior
这意味着后面的第一个参数--args是要调试的可执行文件,之后的所有参数都按原样传递给该可执行文件.
Ada*_*eld 28
如果你想通过GDB运行一些命令,然后让它退出或运行完成,那就行了
echo commands | gdb X
Run Code Online (Sandbox Code Playgroud)
如果要在运行这些命令后将其保留在命令提示符下,则可以执行此操作
(echo commands; cat) | gdb X
Run Code Online (Sandbox Code Playgroud)
这导致将命令回显到GDB,然后键入cat进程,该进程将其stdin复制到stdout,该stdout通过管道传输到GDB.
小智 8
有选项-x,例如
gdb -x gdb_commands exe_file
Run Code Online (Sandbox Code Playgroud)
其中gdb_commands可以是例如(在android模拟器的情况下):
target remote :5039
Run Code Online (Sandbox Code Playgroud)
在这里尝试了所有的答案后,
但是,事实证明你可以使用-ex,就像这样:
gdb -ex "target remote localhost:1234"
Run Code Online (Sandbox Code Playgroud)
您还可以指定-ex多次以运行多个命令!
| 归档时间: |
|
| 查看次数: |
47055 次 |
| 最近记录: |