【发布时间】:2012-05-02 18:59:41
【问题描述】:
我正在尝试调试 Linux 上的应用程序问题。它倾向于在libstdc++.so 或libstdc.so 的随机位置与SIGSEGV 一起崩溃。
似乎在任何地方都没有明显的竞争条件,因为我添加的线程中的作业非常孤立。但它仍然几乎一直崩溃。
应用程序使用g++ -c ... -pthread -D_REENTRANT编译,并与g++ -pthread -o ...链接
但它仍然在libstdc*.so 函数之一中几乎一直崩溃。我已经浪费了几天时间试图找出问题所在,但还是不行......
有人有什么建议吗?有没有办法确保libstdc*.so 被编译为线程感知?任何可以帮助我的 gdb 命令?调试堆?
我只使用 Linux 几年,所以我迷路了......
【问题讨论】:
-
能否贴出相关部分的代码?
-
你想要芥末和那罐虫子吗?
-
@hmjd:不幸的是,它已经是一个庞大的代码库,它已针对多线程进行了扩展。我无法为其中的一部分创建复制场景。因此,我正在寻找可以提供帮助的技术,这就是我所能做的。
-
... which is extended for multi-threading- 天哪!通常是一个糟糕的举动。最好将并发合并到技术设计中,尽管我承认你现在无法控制它。祝你好运!
标签: c++ linux debugging pthreads