我正在修改一个相当大的程序(NS2 网络模拟器),如果能够用 Eclipse 调试它会很好。我配置了 makefile(将 -g 添加到 CFLAGS )以使 gcc 生成调试符号,它们确实生成了,但 Eclipse 拒绝实际找到与这些符号关联的代码。我使用“具有现有代码的 Makefile 项目”导入了巨大的源代码文件夹,当我点击“调试”时,它运行了程序。当我告诉调试器停止时,它通常会在我识别的方法中停止,但是当我单击该方法的名称时,它会显示“源不可用”,即使定义该方法的源文件实际上已在另一个选项卡中打开。我确实将所有源导入到项目中。我是否在 make 配置中遗漏了什么?
^长的令人困惑的解释,我知道......看截图,: http://imageshack.us/photo/my-images/651/zzz1fu.jpg/
请注意,上面屏幕截图中的 IPKTAgent::deBurst() 是在 integrated_agent.h 中声明的——这是我在另一个选项卡中打开的文件。
另外,当我在项目资源管理器中展开我正在调试的可执行文件的条目时,它只列出了它所组成的一些文件。是什么赋予了? (见屏幕截图,列表中应该有更多文件,我正在使用的文件丢失了)。 屏幕截图:http://imageshack.us/photo/my-images/96/zzz2z.jpg/
最佳答案
刚刚测试过。为我工作。唯一的问题是我忘记添加 -O0
选项来禁用优化;这也可能是您的问题。
我的建议:
- 尝试禁用优化
- 检查您使用的编译器选项是否真正应用了。您使用
CFLAGS
,但我在标签中看到了 c++,因此您可能应该使用CXXFLAGS
(它可能取决于您使用的构建工具) IPKTAgent::deBurst()
在integrated_agent.h
中声明。但是在哪里实现呢?检查它是否在 header 中实现和/或您可以访问实现它的源文件。- 检查您是否可以使用 gdb 调试您的可执行文件
- 尝试创建简单的基于 automake/autoconf 的项目,并检查您是否能够在 gdb 和 eclipse 中调试它。你应该能够。
关于c++ - 存在调试符号,但 eclipse 没有将它们与源代码相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6475918/