调用第三方可执行文件时调试分段错误
Debugging a segmentation fault when calling a third party executable
在Rhel5上,我在调用第三方C++可执行文件时遇到分段错误。
不幸的是,我没有能力在启用DEBUG标志的情况下重新编译这个第三方可执行文件。因此,不幸的是,分割错误的核心转储并没有为我们提供太多信息,gdb和valgrind都没有。
例如,这里是valgrind:
==4074== Process terminating with default action of signal 11 (SIGSEGV)
==4074== Access not within mapped region at address 0x7158E7F7
==4074== at 0x7158E7F7: ???
==4074== by 0x6322203A22656D6E: ???
==4074== by 0x306C675F6E557267: ???
==4074== by 0x202C22373232302F: ???
==4074== by 0x6D616E656C696621: ???
==4074== by 0x72686322203A2264: ???
==4074== by 0x3030306C675F6E54: ???
==4074== by 0x346469702E373231: ???
==4074== by 0x646469662E34372F: ???
==4074== by 0x722E64616568656B: ???
==4074== by 0x63656D6F6C756764: ???
有没有办法,也许是通过lsof或其他什么方式,向第三方供应商了解问题的原因?
我们使用strace 找到了答案
特别是
strace -f -o strace.txt $myPath/bin/XMLForm $* ${MISSING_LOCALE} ORBtraceLevel 40 -ORBtraceThreadId 1
这生成了一个strace.txt文件,其中包含所有低级C-API调用。
你难道不知道吗,就在分割错误之前。。。。程序正在查找一个不存在的日志文件。我们添加了那个日志,bam不再有seg错误。
相关文章:
- 在某些循环内使用vector.push_back时出现分段错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当我的阵列太大时出现分段错误
- 分段错误当我试图运行程序时出错
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 尝试使用集合函数时出现分段错误
- 我无法缩小此分段错误的原因
- g++的分段错误(在NaN上使用to_string两次时)
- 我是如何在这段代码中出现分段错误的
- 创建结构的数组时遇到分段错误
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 在 c++ 中实现 Trie 时出现分段错误
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 为什么我遇到分段错误?
- 动态类的分段错误(家庭作业问题)
- 分段错误 - 读取初始化指针的数组
- 如何摆脱C ++中的分段错误错误?
- 使用 CTYPE 时出现分段错误
- 为什么代码给出分段错误?