GDB,连接到使用 GDBServer 启动的正在运行的进程

gdb, connect to a running process started with gdbserver

本文关键字:运行 进程 启动 GDBServer 连接 GDB      更新时间:2023-10-16

我想写一个小型的文本编辑器,只是为了用C和ncurses来玩它。

所以我使用 -g 选项编译了它,并得到了一个名为"编辑器"的文件。我可以做cgdb editor input-for-text-editor.txt并且可以调试它,除了诅咒之外没有问题使用标准输出...你知道它打破了GDB使用的输入/输出。

所以我决定做的是使用 gdbserver 启动我的程序并连接到该进程以进行另一个 gdb 会话。

所以我做了以下工作:

gdbserver port:1234 editor input-for-text-editor.txt

在另一个终端中:

gdb editor
target remote localhost:1234

此时,我已连接到该过程:

bt
#1  0x0000000000000002 in ?? ()
#2  0x00007fffffffea7b in ?? ()
#3  0x00007fffffffea82 in ?? ()
#4  0x0000000000000000 in ?? ()

但正如你所看到的,我没有关于正在执行哪一行的信息。此外,如果我在 main +30(那是无限循环所在的地方(中放置一个中断并按 c ,它不会在那里中断。相反,它只是永远继续执行。

有人可以告诉我,我做错了什么吗?如何从另一个 gdb 连接到我的进程,以便将进程的 stdout/in 与调试器的 stdout/in 分离?

提前感谢您的帮助。

对于任何观看此线程的人来说,问题都是通过使用-g标志编译来解决的

https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options