【发布时间】:2021-07-11 23:49:24
【问题描述】:
我正在使用 gdb 分析核心转储文件。可执行文件链接到共享库,可执行文件和共享库都使用-g 标志编译,在bt 我可以看到可执行文件中的第 num 行,但看不到共享库。有什么办法解决这个问题吗?
我是这样打开核心文件的:
gdb /path/to/executable /path/to/core/file
(gdb) bt
#0 0x00007f4e7711b438 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1 0x00007f4e7711d03a in __GI_abort () at abort.c:89
#2 0x00007f4e7858b8b1 in std::pair<tsmap3::NearestPtResult, double> tsmap3::IndexTree::GetNearestPt2<tsmap3::LaneImpl>(tsmap3::Point3d const&, tsmap3::Point3d const&, double, std::function<tsmap3::NearestPtResult (tsmap3::Point3d const&, tsmap3::LaneImpl const*)>, std::function<bool (tsmap3::LaneImpl const*)>, std::unordered_set<unsigned long, std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned long> >&) const () from /home/ziqi.liu/code/map-lane-map3/build/src/tsmap3.cpython-35m-x86_64-linux-gnu.so
#3 0x00007f4e784d93a0 in tsmap3::NearestPtResult tsmap3::GridSystem::GetNearestPt<tsmap3::LaneImpl>(tsmap3::Point3d const&, double, std::function<tsmap3::NearestPtResult (tsmap3::Point3d const&, tsmap3::LaneImpl const*)> const&, std::function<bool (tsmap3::LaneImpl const*)> const&) () from /home/ziqi.liu/code/map-lane-map3/build/src/tsmap3.cpython-35m-x86_64-linux-gnu.so
#4 0x00007f4e784bf201 in tsmap3::TSMapImpl::GetNearestRefPt(tsmap3::Point3d const&, double, std::vector<tsmap3::Lane::Property, std::allocator<tsmap3::Lane::Property> > const&, bool) const ()
from /home/ziqi.liu/code/map-lane-map3/build/src/tsmap3.cpython-35m-x86_64-linux-gnu.so
#5 0x00007f4e78537fb3 in tsmap3::TSMap::GetNearestRefPt(tsmap3::Point3d const&, double, std::vector<tsmap3::Lane::Property, std::allocator<tsmap3::Lane::Property> > const&, bool) const ()
from /home/ziqi.liu/code/map-lane-map3/build/src/tsmap3.cpython-35m-x86_64-linux-gnu.so
#6 0x00000000004230d2 in main (argc=<optimized out>, argv=<optimized out>) at /home/ziqi.liu/code/map-lane-map3/examples/bench_get_nearest_ref_pt.cpp:54
/home/ziqi.liu/code/map-lane-map3/build/src/tsmap3.cpython-35m-x86_64-linux-gnu.so 是共享库的so文件。
我确实有那个共享库的源文件,我想我需要提示 gdb 在哪里可以找到源文件
【问题讨论】:
-
@AllanWind 当我输入
sharedlibrary tsmap3时,gdb 似乎已经为该共享库加载了符号,但它没有显示行号。所以我猜gdb找不到源文件,有没有办法让gdb知道源文件的位置?