我正在尝试在Windows 7上的Eclipse Juno的CDT环境中进行远程调试,而远程机器在Linux下运行。对于一般目的而言,不幸的是,确切的设置要复杂得多,因此我在这个问题上已经挣扎了一个多星期,搜索结果中提供的解决方案都不够。
所以,这是我的确切设置(非常抱歉这篇长篇文章!):
现在,我在机器B上安装了gdbserver(GNU gdbserver(GDB)SUSE(7.2-3.3)),在机器C上安装了gdb - 使用匹配的目标和主机编译它,如常见教程中所示,版本输出如下所示:
GNU gdb (GDB) 7.6.50.20130508-cvs (cygwin-special)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-cygwin".
我安装了Eclipse插件,用于运行和调试远程应用程序。我按照http://wiki.eclipse.org/CDT/User/FAQ#How_do_I_debug_a_remote_application.3F中的建议设置了所有内容 当我现在开始我的调试会话时,gdbserver和应用程序Z在Eclipse中从机器B成功启动。我也可以通过调用存储过程来触发我的应用程序Y.但是这里出现了以下问题和疑问:
启动调试器时,它说:
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
Created trace state variable $trace_timestamp for target's variable 1.
我已经阅读过有关在某处包含共享库的内容,但我并不完全了解共享库的含义。也许这个问题也与下一点有关。
我尝试直接在远程计算机上进行gdb调试(启动应用程序Z,从外部触发应用程序Y)并尝试在我的应用程序Y中设置特定函数的断点。但这也不起作用。不过,我没有得到上面提到的警告。
所以现在我被困在这里,不知道该怎么做。我已经阅读了很多主题和博客,但是没有一个具有我所拥有的特定设置,因此总是缺少一些细节。
我真的非常感谢你的帮助。
答案 0 :(得分:0)
而不是断点,将sleep()放在代码中的某处,然后在它休眠时将它附加到GDB。