在gdb下运行时,SSL_library_init导致SIGILL

尝试使用gdb调试程序时,它无法在OPENSSL_cpuid_setup中报告SIGILL。

有了这个简单的代码,我的行为与:

#include <openssl/ssl.h>

int main()

{

SSL_library_init();

}

它可以编译并运行良好,但是从回溯之后的gdb报告开始

Program received signal SIGILL, Illegal instruction.

0xb6b2eb40 in ?? () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0

(gdb) where

#0 0xb6b2eb40 in ?? () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0

#1 0xb6b2b404 in OPENSSL_cpuid_setup () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0

#2 0xb6fdf058 in call_init (l=<optimized out>, argc=1, argv=0xbefff7d4, env=0xbefff7dc) at dl-init.c:78

#3 0xb6fdf134 in _dl_init (main_map=0xb6fff958, argc=1, argv=0xbefff7d4, env=0xbefff7dc) at dl-init.c:126

#4 0xb6fcfda4 in _dl_start_user () from /lib/ld-linux-armhf.so.3

Backtrace stopped: previous frame identical to this frame (corrupt stack?)

如何在gdb下运行这样的程序?

回答:

SSL_library_init在gdb下运行时会导致SIGILL …

实际上,它一直都在执行,而不仅仅是在GDB下。当库测试处理器功能时,这是启动代码中的正常行为。您可以通过发出安全地忽略它handle SIGILL

nostop

有关更多详细信息,请参见OpenSSL

FAQ中的第17项:调试时,在OpenSSL初始化期间观察到SIGILL:为什么?。

以上是 在gdb下运行时,SSL_library_init导致SIGILL 的全部内容, 来源链接: utcz.com/qa/427112.html

回到顶部