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

时间:2017-02-03 01:14:29

标签: c gdb pthreads

我正在用C语言编写客户端/服务器程序。

我的客户端有一个从stdin读取输入的线程,它只是一个while(1)循环来读取stdin的输入。每当它读取一行时,它就会将它传递给另一个处理消息解析和框架的线程。

当我输入gdb时,命令行被gdb提示符占用,我无法再将行输入到stdin。

有办法吗? (我不想将stdin重定向到输入文件,因为我尝试过这种方法并且它不起作用)

2 个答案:

答案 0 :(得分:5)

在一个终端中运行您的程序,并从另一个终端的gdb连接到它。

要附加到正在运行的程序,请找到要附加到的程序的进程ID(PID),然后执行gdb <executable> <PID>

答案 1 :(得分:0)

作为 Jonathan Reinhart 回答的补充,这里有一个单行程序,可以按名称附加到正在运行的程序上:

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