【发布时间】:2013-08-05 20:56:31
【问题描述】:
我有一个程序,我想通过在非默认构造函数中设置断点来进行调试,但我设置的断点从未命中。下面是一个出现此问题的示例程序。在 main 函数中设置断点没有问题,但在 Domain.cpp 文件中设置的任何断点都会被忽略:
Main.cpp:
#include <iostream>
#include "Domain.h"
int main()
{
Domain y;
std::cout << y.x << std::endl; // <- No problem setting breakpoint here
return 0;
}
域.cpp:
#include "Domain.h"
Domain::Domain()
{
x = 4; // <- A breakpoint here is skipped
}
域.h:
#ifndef DOMAIN_H_
#define DOMAIN_H_
class Domain
{
public:
int x;
public:
Domain();
};
#endif /* DOMAIN_H_ */
但是,如果我将所有内容都放在一个文件中,问题就不存在了:
Main2.cpp:
#include <iostream>
int main()
{
class Domain
{
public:
int x;
Domain()
{
x = 4; // <- No problem setting breakpoint here now!
};
};
Domain y;
std::cout << y.x << std::endl;
return 0;
}
为什么会这样?如何更改此设置,以便在使用多个文件时设置断点?
我可以确认,当我在终端中手动运行调试器以及通过 Eclipse CDT 运行它时,断点都不起作用,我得到了这个问题中讨论的相同错误,但显然从未得到回答:
Why does Eclipse CDT ignore breakpoints?
我正在使用:
- Eclipse 开普勒
- Mac OSX 10.8.4
- gdb 6.3.5(苹果版)
- 带有
-O0和-g3标志的gcc 4.2.1
请耐心等待。我还在学习中。
【问题讨论】:
-
我在使用 gdb(以及其他......)时总是遇到这个问题,即使在命令行中也是如此。你可以使用 Visual Studio(它有更好的调试器)。
-
我更喜欢坚持使用 GNU 工具,因为我正在研究跨平台解决方案,并且我更喜欢尽可能使用免费(在所有意义上的)工具。
-
我在其他场合看到过 GDB 跳过行,但从来没有这样。再说一次,我没有运行“Apple”。
标签: c++ eclipse gcc gdb eclipse-cdt