Eclipse/MinGW/CDT/GDB和调试问题 我有一些C++代码并尝试调试它。 main.cpp: #include <iostream> using namespace std; int main() { graph<int> a; a.add(1); a.addEdge(1,2); std::vector<int> answ = a.getAdjacent(1); for (unsigned int i = 0; i < answ.size(); i++) std::cout<<answ[i]<<std::endl; return 0; }

Eclipse/MinGW/CDT/GDB和调试问题 我有一些C++代码并尝试调试它。 main.cpp: #include <iostream> using namespace std; int main() { graph<int> a; a.add(1); a.addEdge(1,2); std::vector<int> answ = a.getAdjacent(1); for (unsigned int i = 0; i < answ.size(); i++) std::cout<<answ[i]<<std::endl; return 0; },c++,eclipse,gdb,mingw,eclipse-cdt,C++,Eclipse,Gdb,Mingw,Eclipse Cdt,问题出在哪里?在使用eclipse+cdt和gdb时,这似乎是一个相对频繁的问题。将默认启动器从GDB(DSF)创建过程更改为标准创建过程似乎可以解决大多数问题 您可以在“首选项->运行/调试->启动->默认启动程序”下找到此选项: 还要确保编译时启用了调试信息。似乎只有将标准参数添加到“main()”函数中就足够了(我注意到您没有在“main()”中使用参数): 检查这个 我也看到了这个问题。LinuxQuestions.org上的人帮助我取得了一些进步 gcc 4.1.0(即SUSE 10

问题出在哪里?

在使用eclipse+cdt和gdb时,这似乎是一个相对频繁的问题。将默认启动器从GDB(DSF)创建过程更改为标准创建过程似乎可以解决大多数问题

您可以在“首选项->运行/调试->启动->默认启动程序”下找到此选项:


还要确保编译时启用了调试信息。

似乎只有将标准参数添加到“main()”函数中就足够了(我注意到您没有在“main()”中使用参数):

检查这个

我也看到了这个问题。LinuxQuestions.org上的人帮助我取得了一些进步

gcc 4.1.0(即SUSE 10.1中的32位)似乎有一个优化,如果在main()的主体中不使用argc和argv,这些符号就不会出现在二进制文件中(即使启用了-g和任何特殊优化),64位编译器也不会这样做

如果您只是在一个不使用argc/argv(并且是用gcc 4.1.0编译的)的程序中“断开main”并打印argc,则从gdb命令行获得“无法访问地址0x0处的内存”。我注意到您的示例不使用argc/argv

<>这是C或C++编译的真实版。 Eclipse在遇到第一个断点时可能会以某种方式被这个错误弄糊涂。我也无法在更多断点处停止,直到我添加了代码来引用argc/argv,或者将main(在C++中)重新声明为“int main(int,char*[]),这样Eclipse就不需要这些符号了

gdb输出窗口中仍然存在错误(当前上下文中没有符号“new”),但可以设置断点

嗯,,
-nick

这段代码似乎不完整(graph模板类型从何而来?),但由于错误似乎与文件内容无关,所有的图形内容都会分散注意力;我认为最简单的代码应该是“
int main(){/*line break*/返回0;/*line break*/}
”并在第行上放置一个断点“
return 0;
”@gx_u与
int main(){/*换行符*/return 0;/*换行符*/}
尽可能简化您的路径(暂时)。我看到eclipse在其不喜欢的有效路径方面存在问题。这是一个makefile项目吗?尝试以msys方式引用路径(/c/users/home…)。我没有标准的创建过程;只有第一个显示的选项,旧版创建过程。标准被重命名为旧版。感谢这为我解决了这个问题,但我想知道为什么Dsf不能正常工作。我有一个来自
Makefile的项目,带有现有代码,我也有同样的问题,但我找不到这个菜单选项。是吗在
Makefile
这个设置中,还是我遗漏了什么?@Elod也许可以尝试一下Luna SR2发行版——它与CDT 8.6.0一起打包。我刚刚签出了它,安装程序是一样的,只是它被重命名为
Legacy Create Process
,正如tzafrir指出的那样。请确保您有
[调试]
在“启动类型/模式”中选择,否则“首选启动器”将为空。
The target endianness is set automatically (currently little endian)
No source file named C:\Users\home\workspace\graphcpp\main.cpp.
[New Thread 3552.0xdc8]