python - 如何将程序的 STDOUT 重定向到 GDB 调试程序的 STDIN?

标签 python c gdb

我通常使用以下方法将 STDOUT 重定向到另一个程序:

python -c 'print("HelloWorld")' | ./myprog

我知道我可以为 GDB 中的调试程序提供文件内容作为 STDIN:

(gdb) run myprog < input.txt

但是,我该怎么做:

(gdb) run mypprog < python -c 'print("HelloWorld")'

无需先创建一个输出为 python -c '...' 的文件?

最佳答案

一种方法是将 gdb 附加到您已经运行的进程。使用 pstop 找到它的 pid。假设是37,然后运行

(gdb) attach 37

虽然运行时间很短,但这可能不适用于您的情况。另一种方法是使用 fifo .

mkfifo fifo
python -c 'print("Hello World")' > fifo &
gdb myprog
run < fifo

关于python - 如何将程序的 STDOUT 重定向到 GDB 调试程序的 STDIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55500271/

相关文章:

python - 无法在赋值表达式中设置字段值

c - 参数未正确传递。

在单个函数原型(prototype)中将包含单词和数字的文本文件调用到数组中

Python: ImportError: lxml 未找到,请安装

python - 这两个 Python pandas dataframe 命令有什么区别?

python - 从列表中删除 nan - Python

c - 如何在c编程中从文本文件读取数据到数组结构?

c - 为什么 gdb 将 sqrt(3) 评估为 0?

python - 如果通过 strcpy() 获取用户输入,用户输入是否会被复制到超出空格或空字符的堆栈上

c - 为什么 ddd 不显示源代码?