我正在用C语言写一个客户机/服务器程序。我的客户端有一个线程从stdin阅读输入,它只是一个while(1)循环从stdin读取输入。每当它读取一行时,它就将其传递给另一个线程,处理消息解析和成帧。当我输入gdb时,命令行被gdb提示符占用,我无法再向stdin中输入行。有没有办法做到这一点?(我不想重定向stdin到一个输入文件,因为我已经尝试过这种方法,它不工作)
r6l8ljro1#
在一个终端上运行您的程序,并在另一个终端上从gdb附加到该程序。要附加到正在运行的程序,请找到要附加到的程序的进程ID(PID),然后执行gdb <executable> <PID>。
gdb <executable> <PID>
6jygbczu2#
作为对Jonathan Reinhart答案的补充,这里有一行代码可以按名称附加到正在运行的程序中:
gdb -p $(pgrep <executable-name>)
mu0hgdu03#
作为澄清,如果你知道程序的进程ID,你不需要可执行文件的名称。这将允许你直接附加一个程序。
gdb -p PID
3条答案
按热度按时间r6l8ljro1#
在一个终端上运行您的程序,并在另一个终端上从gdb附加到该程序。
要附加到正在运行的程序,请找到要附加到的程序的进程ID(PID),然后执行
gdb <executable> <PID>
。6jygbczu2#
作为对Jonathan Reinhart答案的补充,这里有一行代码可以按名称附加到正在运行的程序中:
mu0hgdu03#
作为澄清,如果你知道程序的进程ID,你不需要可执行文件的名称。这将允许你直接附加一个程序。