【debug】debug经验|debug排查顺序|没有core文件和日志如何定位?

本文介绍了在Linux系统中,当遇到错误提示"No source file named."或没有core dump文件时,如何进行故障排查。首先,检查各个组件版本和状态,然后查找代码逻辑错误。针对没有core dump的情况,可以使用dmesg和journalctl命令查看系统日志,结合addr2line工具定位问题。此外,文章还提到了系统资源检查、错误日志分析和关键命令的使用,如pstack和pstrace,以帮助诊断和解决问题。
摘要由CSDN通过智能技术生成

排查顺序

1、各个组件版本是否匹配。

2、各个组件是否都已经重新加载了最新库/完成重启。(特别当系统进程很多时,确保所以组件都是最新状态)。

3、代码逻辑bug。

错误记录

1、No source file named. or 没有在断点的地方停止

No source file named. Make breakpoint pending on future shared library load

(gdb) b mps_guide_db.c:1699

No source file named mps_guide_db.c.

1)可能是因为调用了动态库,要打断点的文件是动态库的

可以通过 以下方式得到解决:
(gdb) set breakpoint pending on
(gdb) b db_subscr_no_lookup
Function "db_subscr_no_lookup" not defined.
Breakpoint 1 (db_subscr_no_lookup) pending.

原文链接:https://blog.csdn.net/huluedeai/article/details/52225923

2)可能是 程序和库 编译的时候没有加-g 或者程序和库经过strip 命令已经将其中的调试信息去掉了

如:

(gdb) b RDMAConnectedSocketImpl.cc:159
No source file named RDMAConnectedSocketImpl.cc.
Make breakpoint pending on future shared library load? (y or [n])

gdb调试时的问题Missing separate debuginfos, use: debuginfo-install glibc-XXX
cd 

/etc/yum.repos.d

vim CentOS-Debuginfo.repo 

enable = 1

yum install glibc

debuginfo-install glibc.x86_64 0:2.17-307.el7.1

没有core dump文件和日志如何定位segment/core dump问题?

dmesg + addr2line 

dmesg打印环形缓冲区的内容。这些信息还会实时发送到syslogdklogd(在它们运行时),最终以形式发送给/var/log/messages;什么时候dmesg最有用是捕获之前syslogd和/或klogd开始的启动时消息,以便将它们正确记录。

dmesg:dmesg是(显示或驱动程序)消息。它用于检查或控制内核环形缓冲区。

messages:它包含全局系统消息,包括系统启动期间记录的消息。有几项已登录,/var/log/messages包括mail,cron,daemon,kern,auth等。

步骤:

以后, 在没有core时, 可以优先看:

      1. /var/log/messages

      2. dmesg                                dmesg    /var/log/messages

         dmesg  -Tw  显示时间

        dmesg |less  or dmesg |more   分页查看。 (more 只能向后翻页)

      3. /var/log/dmesg

      4.journalctl -xe 命令(系统日志查询)

       journalctl -k  和 "journalctl --dmesg 只显示系统的内核日志信息。

        -f, --follow
        只显示最新的日志项,并且不断显示新生成的日志项。 此选项隐含了 -n 选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值