应用程序在GDB中崩溃,但在正常运行时不会崩溃,在libcrypto中发生崩溃

问题描述 投票:0回答:1

我有一个Qt应用程序正在显示WebView(基于Webkit)。我正在尝试使用gdb对其进行调试。当我通过gdb运行应用程序时,它几乎立即崩溃。在gdb之外执行时,该应用程序可以正常运行。

崩溃的原因是:

Thread 1 "myapp" received signal SIGILL, Illegal instruction.
0x4a4d9a88 in ?? () from /usr/lib/libcrypto.so.1.0.2

由于错误是SIGILL,是否gdb可能从错误的路径加载了lib?

该应用程序非常简单,只显示特定URL的WebView:

    ui->webView->page()->mainFrame()->setUrl(QUrl(urlString));

执行上述行后,应用程序在gdb中崩溃。

该环境是在arm体系结构上运行linux的嵌入式系统:

Linux hh4 3.1.10-2.8.5+g841700f8a2ea #1 SMP PREEMPT Fri May 3 18:48:07 UTC 2019 armv7l GNU/Linux

感谢您对理解为何应用程序在gdb中崩溃的任何帮助。

qt ssl arm gdb webkit
1个回答
0
投票

GDB加载错误的库是可能的。

一种简单的查找方法是在main()上设置一个断点-届时您希望库将内存映射到进程中。

[您可能可以使用GDB进行检查,或者在目标系统上获取shell并运行

losf -p <process_id>

这将列出该进程拥有的所有打开的文件句柄-包括所有映射的内存共享库。

如果您以某种方式使用开发主机的库,则肯定会对此进行解释。

© www.soinside.com 2019 - 2024. All rights reserved.