【问题标题】:gdb, connect to a running process started with gdbservergdb,连接到以 gdbserver 启动的正在运行的进程
【发布时间】: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 标志进行编译?
  • 是的,我有。
  • 我虽然做了,但你是对的,我没有。哇。非常感谢:)

标签: c++ c gcc gdb ncurses


【解决方案1】:

对于任何观看此线程的人,问题已通过使用-g 标志进行编译解决

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

【讨论】:

  • 我假设问题是没有使用-g标志编译。
猜你喜欢
  • 2015-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 2017-12-20
  • 2023-03-07
  • 2013-05-15
相关资源
最近更新 更多