使用方法
我们经常可以在openGauss的日志中看到类似如下的错误:
2024-10-09 09:31:35.807 6705270c.6535 [unknown] 281439526236064 dn_6002 0 dn_6001_6002_6003 42809 0 [BACKEND] BACKTRACELOG: tid[1289346]'s backtrace:/usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb(+0xd8e2e8) [0xaaad448de2e8]/usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb(_Z9errfinishiz+0x4a4) [0xaaad448d1214]/usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb(_Z17UpdateControlFilev+0x454) [0xaaad4526f174]/usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb(_Z16CreateCheckPointi+0x118c) [0xaaad4528df30]/usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb(_Z12ShutdownXLOGim+0x174) [0xaaad4528ef54]/usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb(_Z16CheckpointerMainv+0x7c0) [0xaaad44e2cff0]/usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb(_Z17GaussDbThreadMainIL15knl_thread_role38EEiP14knl_thread_arg+0x3ec) [0xaaad44e15aac]/usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb(+0x129e850) [0xaaad44dee850]/lib64/libpthread.so.0(+0x88cc) [0xfffe92e888cc]/lib64/libc.so.6(+0xd954c) [0xfffe92dc954c]Use addr2line to get pretty function name and line
首先我们利用c++filt解析函数的原始签名,包括函数名、参数类型和返回类型等信息。
例如我们想分析下面这个函数:
[czk@openGauss135]$ echo "_Z17UpdateControlFilev+0x454" | c++filtUpdateControlFile()+0x454 // 函数名+偏移量
再使用nm命令获取函数在可执行文件中的地址。
[czk@openGauss135]$ which gaussdb/usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb[czk@openGauss135]$ nm -C /usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb | grep UpdateControlFile0000000001fffd5c T UpdateControlFile()
我们可以使用addr2line命令来解析出错的函数和行号。
[czk@openGauss135]$ addr2line -e /usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb 0x1fffd5c/usr1/hmm/openGauss-server/src/gausskernel/storage/access/transam/xlog.cpp:6423
这将给出UpdateControlFile的起始行号,我们也可以通过日志里记录的函数偏移来计算具体的行号。
[czk@openGauss135]$ addr2line -e /usr1/hmm/openGauss/cluster/gauss/app/bin/gaussdb 0x20001b0 // 0x1fffd5c + 0x454/usr1/hmm/openGauss-server/src/gausskernel/storage/access/transam/xlog.cpp:6458 (discriminator 5)
这样我们就可以轻松定位到出错的代码具体在哪了。
点击阅读原文跳转作者文章
文章转载自openGauss,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




