【发布时间】:2014-12-21 16:14:49
【问题描述】:
我想用 C 和 ncurses 写一个小的文本编辑器,只是为了好玩。
所以我使用 -g 选项编译它并得到一个名为“editor”的文件。
我可以做cgdb editor input-for-text-editor.txt 并且可以调试它没有问题,除了 ncurses
使用标准输出...你知道它会破坏 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 标志进行编译?
-
是的,我有。
-
我虽然做了,但你是对的,我没有。哇。非常感谢:)