我在Netbeans 8.0.1上使用现有源代码和Makefile创建了一个C++项目。我运行了build,它运行了Makefile,并构建了名为a.out的可执行文件。问题是,当我在IDE中设置断点时,它不会在那里暂停。问题是什么?此站点上的其他问题都无法解决此问题。生成文件:
Makefile
a.out
CC=g++ build: foo.cpp foo.h main.cpp $(CC) foo.cpp foo.h main.cpp
bq3bfh9z1#
我有时也会遇到这个问题。有几个可能的解决方案:1.确保构建的是Debug版本,并且在构建时-g是编译器命令的一部分(默认情况下应该是这样,但必须仔细检查,特别是因为您似乎在使用自己的Makefile)。1.重新启动NetBeans并执行干净构建。这可能会有所帮助。1.直接使用gdb,而不是通过NetBeans GUI。根据我的经验,gdb总是可以工作,但NetBeans的调试不可靠,有时会出现我不知道的问题。出于这个原因,我大多使用良好的旧命令行调试器。
-g
gdb
aor9mmx12#
-g选项是第一件事--确保它在编译行上。如果它仍然不起作用,那么直接运行gdb看看它是否起作用。如果有问题,gdb会吐出一个错误或警告,这在通过netbeans运行它时可能会被掩盖。例如:
gdb <progname>
并设置断点,例如
(gdb) break main
然后运行它:
(gdb) run
如果它在第一条语句上中断ok,但在netbeans中没有,那么就说明有其他问题。但是如果它运行到最后并发出警告,例如下面的re. missing packages:
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.149.el6.x86_64
那么就按照它告诉你的去做。一旦gdb高兴了,netbeans也应该高兴了。
1l5u6lss3#
对于我的项目,NetBeans没有检测到的是项目属性中的一个错误属性值。我将项目构建设置为“Debug”,但在“Build”〉“C++ Compiler”〉“Development Mode”中,该值被设置为“Release”。这是我编辑属性时的错误。通过将其改回“Debug”,问题解决了。
3条答案
按热度按时间bq3bfh9z1#
我有时也会遇到这个问题。有几个可能的解决方案:
1.确保构建的是Debug版本,并且在构建时
-g
是编译器命令的一部分(默认情况下应该是这样,但必须仔细检查,特别是因为您似乎在使用自己的Makefile)。1.重新启动NetBeans并执行干净构建。这可能会有所帮助。
1.直接使用
gdb
,而不是通过NetBeans GUI。根据我的经验,gdb
总是可以工作,但NetBeans的调试不可靠,有时会出现我不知道的问题。出于这个原因,我大多使用良好的旧命令行调试器。aor9mmx12#
-g选项是第一件事--确保它在编译行上。如果它仍然不起作用,那么直接运行gdb看看它是否起作用。如果有问题,gdb会吐出一个错误或警告,这在通过netbeans运行它时可能会被掩盖。例如:
并设置断点,例如
然后运行它:
如果它在第一条语句上中断ok,但在netbeans中没有,那么就说明有其他问题。但是如果它运行到最后并发出警告,例如下面的re. missing packages:
那么就按照它告诉你的去做。一旦gdb高兴了,netbeans也应该高兴了。
1l5u6lss3#
对于我的项目,NetBeans没有检测到的是项目属性中的一个错误属性值。我将项目构建设置为“Debug”,但在“Build”〉“C++ Compiler”〉“Development Mode”中,该值被设置为“Release”。这是我编辑属性时的错误。通过将其改回“Debug”,问题解决了。