【发布时间】:2014-09-09 13:40:28
【问题描述】:
所以我正在为嵌入式系统(ARM 上的 Linux)编写应用程序,一切正常,直到我决定在 main 函数的开头再添加一个类。看起来是这样的(这里不能贴实际代码):
int main ()
{
Someclass class1;
....
}
然后,应用程序从一开始就返回代码 1(一般错误)。如果我删除它 - 一切都很好。对我来说,看起来我的堆栈空间用完了——但在这种情况下,系统应该抛出一个 SIGSEV 或 SIGSTKFLT。但是没有什么只是错误代码1。我试图像这样得到stderr:
./app 2> error.log
但是什么也没有。
尝试使用远程 gdb 进行调试:
客户:
无法访问地址 0x3030204 处的内存
无法访问地址 0x3030200 处的内存
服务器:
从主机xxxxxx远程调试
readchar: 得到 EOF
远程端已终止连接。
详情:
我正在编写 C++11 (TR1)(特定于项目),使用 GCC 4.4.6(也是特定于项目)进行编译,使用 GDB 7.4 进行调试
已解决 非常感谢所有回复的人,我已经设法解决了这个问题,这是我的错 - 在调用包装类之前我没有正确初始化设备的库(后来它们被初始化,因此它起作用了)。再次感谢大家。
【问题讨论】:
-
有关您的课程的详细信息可能会有所帮助。你系统 c++ 启用了吗?
-
我不太了解你。如果您在谈论标准 C++ 库 - 是的,它们就在那里。
-
你能在可执行文件上使用
ldd吗?所有的依赖都满足了吗? -
GCC 4.4 并不真正符合 C++11。升级到 GCC 4.9
-
不,我在那个系统上没有 ldd,但我
m using that class later in code and it works fine, so I assume that dependencies are fine. _GCC 4.4 is not really C++11 compliant. Upgrade to GCC 4.9_ I cant - 正如我所说 - 它是特定于项目的。 有关您的类的详细信息可能会有所帮助添加的类只是设备库中本机类的包装类。