c/c++程序依赖外部库,在未调用库的函数情况下,程序崩溃

2018-07-02 10:30:48 +08:00
 paparika

可能是库引发的崩溃吗?如果是,可能什么原因

3053 次点击
所在节点    Linux
25 条回复
neoblackcap
2018-07-02 11:47:14 +08:00
首先你能确定是因为外部库引起程序崩溃吗?
forestyuan
2018-07-02 11:48:17 +08:00
外部库在加载的时候,可能会在 DllMain()里面做一些初始化工作,完全有可能导致程序崩溃。
这是在 Windows 上的情况,linux 我不熟,我估计也有类似的情况。
paparika
2018-07-02 11:49:27 +08:00
@neoblackcap 不能完全确定,不过对比一下,把库编进去会有崩溃现象,所以脑暴一下有什么可能
paparika
2018-07-02 11:49:47 +08:00
@forestyuan 我这是 linux
classyk
2018-07-02 11:53:05 +08:00
C++的就直接单步调试一下吧。这种情况很有可能就是全局变量的初始化问题。
chinuno
2018-07-02 12:25:47 +08:00
preload 试一下是不是只要加载 so 就崩,是的话可能 so 用了 CPU 不支持的指令集
paparika
2018-07-02 12:36:04 +08:00
@chinuno 目前是个静态库
mason961125
2018-07-02 12:43:19 +08:00
gdb 一下看看哪里 seg fault ?
paparika
2018-07-02 12:50:54 +08:00
@mason961125 貌似是 pthread 部分
katsusan
2018-07-02 12:53:37 +08:00
bt 的结果看一下
paparika
2018-07-02 12:55:52 +08:00
@katsusan 调用栈吗,没有具体函数啊。其实我也不清楚为啥没有,刚接手的一个嵌入式工程
lanry
2018-07-02 13:17:31 +08:00
静态库哪里来的,是自己编译的?
paparika
2018-07-02 13:23:19 +08:00
@lanry 客户给的
katsusan
2018-07-02 13:48:47 +08:00
@paparika core 文件没生成吗,设置下 unlimit 参数吧
paparika
2018-07-02 13:58:22 +08:00
@katsusan 多谢,我研究下这个
lanry
2018-07-02 14:10:42 +08:00
@paparika 会不会是编译器版本不一致?
katsusan
2018-07-02 14:11:04 +08:00
@paparika 设置 unlimit -c unlimited ->环境里重现事象 -> 生成 core 文件 -> gdb 调试 core 文件,我以前都是这样排查问题的
paparika
2018-07-02 14:32:06 +08:00
@lanry 编译链工具是我给的
paparika
2018-07-02 14:32:46 +08:00
@katsusan 嗯,我试试。不过我这是交叉环境,也可以吗
paparika
2018-07-02 14:36:03 +08:00
@katsusan 目标机器上没有 gdb,估计是把 core 搞到 pc 上,然后用目标 gdb 调试?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/467381

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX