交叉編譯環境的linaro-gdb可以用了,結果打開core文件,顯示堆棧都是??
- 2021 年 11 月 24 日
- 筆記
- C++, GCC/G++/GDB/core dump/調試
交叉編譯環境的linaro-gdb可以用了,結果打開core文件,顯示堆棧都是??
aarch64-linux-gun-gdb ./test core
warning: /lib/libpthread.so.0′: Shared library architecture unknown is not compatible with target architecture aarch64.
warning:’/lib/libdl.so.2′: Shared library architecture unknown is not compatible with target architecture aarch64.
warning: /lib/librt.so.1′: Shared library architecture unknown is not compatible with target architecture aarch64.
warning: /lib/libstdc++.so.6′: Shared library architecture unknown is not compatible with target architecture aarch64.
warning: /lib/libm.so.6′: Shared library architecture unknown is not compatible with target architecture aarch64.
warning: /lib/libgcc_s.so.1′: Shared library architecture unknown is not compatible with target architecture aarch64.
warning: /lib/libc.so.6′: Shared library architecture unknown is not compatible with target architecture aarch64.
warning: Could not load shared library symbols for /lib/ld-linux-aarch64.so.1.
Do you need “set solib-search-path” or “set sysroot”?
varning: Loadable section “,note.gnu.property” outside of ELF segments
warning: Loadable section “.note.gnu.property” outside of ELE segments
Core was generated by ‘./vdevicemonitor’.
Proaram terminated with sianal SIGABRT, Aborted.
#0 0x000040002b80cld4 in ?? () from /lib/libc.so.6
1.實際顯示??的原因就是它提示的原因。 就是它在交叉環境下找不到這個平台的動態庫,無法載入。( 其實我理解它本身有可能繼續載入堆棧的,因為使用x /200a $sp 還是可以看檔當前進程文件自身帶的符號表的。 只是gdb發現前面的載入不了後面的也就不載入了)。
2.解決的方法實際提示中也給了。 就是用一下set solib-search-path或set sysroot配置一下動態庫搜索路徑,讓他知道到哪裡去搜索就好。
前提是現有動態庫。 可以到對應的arm系統里把缺少的動態庫挨個按照文件結構下載好。
然後用set sysroot /home/test/arm_lib。 然後gdb就會重新載入符號表,然後堆棧也就有了。O(∩_∩)O哈哈~。
試了下set solib-search-path好像不太好使,不過感覺二者功能差不多,可能沒有用對姿勢吧。