gpt4 book ai didi

c++ - 使用多个源文件时,GDB 不会中断某些代码行

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:27 26 4
gpt4 key购买 nike

我有一个程序,我想通过在非默认构造函数中设置断点来调试,但我设置的断点从未命中。下面是出现此问题的示例程序。在 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 操作系统 10.8.4
  • gdb 6.3.5(苹果版)
  • 带有 -O0-g3 标志的 gcc 4.2.1

请耐心等待。我仍在摸索中。

最佳答案

您可能会点击这个 GDB bug .

这个 bug 早就被修复了,但是你的 GDB 版本旧了(而且 Apple 不太可能更新它)。

关于c++ - 使用多个源文件时,GDB 不会中断某些代码行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18067569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com