c++ - 远程调试问题

标签 c++ linux gdb remote-debugging gdbserver

我正在尝试远程调试本地网络中服务器上的应用程序。

服务器:

$ uname -a 
Linux broatyctl.localdomain 3.6.11.2-rt33.39.el6rt.x86_64 #1 SMP PREEMPT RT Thu Jul 4 06:46:48 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux

$ gdbserver --version
GNU gdbserver (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1)
Copyright (C) 2010 Free Software Foundation, Inc.
gdbserver is free software, covered by the GNU General Public License.
This gdbserver was configured as "x86_64-redhat-linux-gnu"

工作站:

$ uname -a
Linux workstation.localdomain 3.12.7-300.fc20.x86_64 #1 SMP Fri Jan 10 15:35:31 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

$ gdb --version
GNU gdb (GDB) Fedora 7.6.50.20130731-16.fc20

我在工作站上编译了一个“Hello World”应用程序,它在工作站和服务器上运行都没有错误。

这适用于服务器和工作站

外壳 1:

$gdbserver localhost:2345 CrossTest

外壳 2:

$ gdb CrossTest
(gdb)target extended-remote localhost:2345
(gdb)run

这行不通

服务器:

$ gdbserver workstation.ip.address:2345 CrossTest

工作站:

$ gdb CrossTest
(gdb)target extended-remote server.ip.address:2345
(gdb)cont

GDB 输出

(gdb) cont
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x00007f2a3b247d50 in ?? ()
(gdb) 

gdbserver 告诉我有一个传入连接,但它没有写入我的 hello world 消息。

有什么想法吗?

附言不久前,我已经在 linuxquestions.org 上发布了这个问题。我认为那不是合适的论坛,所以我在这里试试运气。

最佳答案

使用 -ggdb 而不是 -g 进行编译,并使用 target remote 而不是 extended-remote 进行编译。

关于c++ - 远程调试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21187522/

相关文章:

c++ - 查找可变参数列表的字符串格式说明符

c++ - 如何获取指向 std::vector 的最后插入元素的指针?

regex - 如何用sed删除()

python - 使用 distutils 编译 :/usr/lib is added as a file to compile

linux - 如何获取 libncursesw.so.6 文件?安装是 "up to date"但文件不存在

c - 在 Cypress FX3 中初始化 gdb 调试器时出现以下错误

c++ - 为什么MFC中的创建和写入模式无法打开隐藏文件?

c++ - 如何避免为每个成员函数重复类模板规范?

linux - 如何删除两种模式之间的 block 文本?

linux - 从可执行文件中剥离除指定调试信息之外的所有信息