如何在gdb下从文本文件传递参数运行程序?

5

我想要使用类似于在gdb下使用命令的函数。

$ cat arg.txt | xargs ./binary

有没有什么方法可以实现它?

2个回答

3
感谢您,我已经得到了一个简单的解决方案。
(gdb) run $( cat arg.txt )

将命令的输出作为参数传递也是可能的。

(gdb) run $( ruby -e 'print( "text as arguments" )' )

(gdb) run $(cat change_me_bytes.hex) 对于将字节注入到 argv[1] 中非常有效。谢谢! - rustyMagnet

2
当使用 xargs 调用 gdb 时,默认情况下其标准输入被重定向到 /dev/null。显然,gdb 需要标准输入来读取和执行用户输入,但由于标准输入是 /dev/null,因此它无法执行此操作。
解决此问题的一种方法是使用 xargs--arg-file
xargs --arg-file arg.txt gdb --args ./binary

请查看 xargs手册:
   -a file, --arg-file=file
          Read items from file instead of standard input.  If you use
          this option, stdin remains unchanged when commands are run.
          Otherwise, stdin is redirected from /dev/null.

此解决方案处理其他xargs情况,例如当args使用null字节而不是行终止符进行分隔时。 - fuzzyTew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接