调试崩溃,看似损坏的 Linux 堆栈跟踪

Debugging crash with seemingly corrupted Linux stack trace

提问人:Conrad 提问时间:9/29/2023 最后编辑:Conrad 更新时间:9/29/2023 访问量:35

问:

我正在与一个客户合作,该客户正在调试我的代码中的崩溃,并在他们的产品中使用我的库。我无权访问客户端的开发环境。我向他们提供了我的 .so 库和相关的 .pdb 调试信息。(调试信息是通过使用 -g 编译代码创建的,然后使用 创建 .pdb 文件,最后使用 .so 文件删除符号。客户端使用命令 手动将符号加载到 gdb 中。客户端已确认他们使用了正确的库和调试符号。提供给我的堆栈跟踪:objcopy --only-keep-debugobjcopy --strip-alladd-symbol-file libBDR.so.5.1.4.pdb

libc.so.6!__libc_siglongjmp(struct __jmp_buf_tag * env, int val) Line 32      C
libpthread.so.0!longjmp_compat(struct __jmp_buf_tag * env, int val) Line 62   C
libCT.so![Unknown/Just-In-Time compiled code]   
libCT.so!CTInit   
libBDR.so.5.1.4![Unknown/Just-In-Time compiled code]   
libBDR.so.5.1.4!BDRPublic::BDRInit(BDRPublic::tBDRInitData const*, BDRPublic::I_Error&)
libcalappl.so!BDRPublic::BDR_Initialize(BDRPublic::pBDRWrapperInitData initData) Line 7488      C++
libcalappl.so!JPStartBDR(JPPriv * jpPriv, JPFrontOpts * jpOpts,  bdrDLLVersion, BDRPublic::sBDRWrapperConfigDataBuffer * bdrConfigDataBuffer) Line 2240     C++
libcalappl.so!appl_start() Line 392 C++
libcalupdl.so!appl_Main(struct pdf_Handle * hndl) Line 125  C
libcalbrainlib.so!ResEntryPoint(void * param) Line 820      C
libcalbrainlib.so!SI_TaskStartUp(void * pvParam) Line 639   C
libcalbasics.so!s_TaskStartUp(void * param) Line 4445 C++
libcalbasics.so!s_TaskStartUpPthread(void * pvParam) Line 4549    C++
libpthread.so.0!start_thread(void * arg) Line 477     C
libc.so.6!clone() Line 95     C++

我的代码是 libBDR.so/libCT.so;下面的所有内容都是客户端的代码。“未知/即时编译代码”没有意义,因为所有代码都是 C/C++,不应该有 JIT 代码/环境。如何让它们使用代码中缺少的帧信息提供更好的堆栈跟踪?

Linux 调试 堆栈

评论


答: 暂无答案