GDB,连接到使用 GDBServer 启动的正在运行的进程
gdb, connect to a running process started with gdbserver
我想写一个小型的文本编辑器,只是为了用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
相关文章:
- 如何使用 c++ libboost 运行进程并获取其输出?
- 如何运行进程,然后在它退出时收到通知
- 在特定监视器上运行进程
- 使用Runtime.exec从Java运行进程-退出代码139
- 使用C++将CPU专用于在1个核心上运行进程
- 如何找到运行进程的物理套接字 ID/编号
- 如果从文件中读取,则无法按文件名运行进程
- 如何判断进程的用户令牌是否与运行进程的登录会话令牌相同?
- 在 C 语言的后台运行进程
- 在C++中获取带有 Windows 7 API 的运行进程
- r语言 - 如何直接在数据库服务器上运行C++进程以避免传输数据集
- 在虚拟文件系统中运行进程
- 检查是否已运行进程和通信的副本
- c++,总是运行进程或调用可执行文件
- 运行进程命令行
- 如何使用编程方法拦截linux上运行进程中调用的系统调用
- 使用c++获取当前运行进程中的X显示变量
- 获取当前运行进程的网络适配器
- 如何将ShellExecuteEx作为在父级退出后关闭的子级运行进程
- 在多核 (Linux) 中运行进程的命令行参数是什么