C语言 使用gdb调试从stdin读取输入的交互式程序

ztmd8pv5  于 2022-12-03  发布在  其他
关注(0)|答案(3)|浏览(208)

我正在用C语言写一个客户机/服务器程序。
我的客户端有一个线程从stdin阅读输入,它只是一个while(1)循环从stdin读取输入。每当它读取一行时,它就将其传递给另一个线程,处理消息解析和成帧。
当我输入gdb时,命令行被gdb提示符占用,我无法再向stdin中输入行。
有没有办法做到这一点?(我不想重定向stdin到一个输入文件,因为我已经尝试过这种方法,它不工作)

r6l8ljro

r6l8ljro1#

在一个终端上运行您的程序,并在另一个终端上从gdb附加到该程序。
要附加到正在运行的程序,请找到要附加到的程序的进程ID(PID),然后执行gdb <executable> <PID>

6jygbczu

6jygbczu2#

作为对Jonathan Reinhart答案的补充,这里有一行代码可以按名称附加到正在运行的程序中:

gdb -p $(pgrep <executable-name>)
mu0hgdu0

mu0hgdu03#

作为澄清,如果你知道程序的进程ID,你不需要可执行文件的名称。这将允许你直接附加一个程序。

gdb -p PID

相关问题