linux调用第三方库报错有源码如何调试

linux调用第三方库报错有源码如何调试,第1张

调试Linux中第三方库报错的源码可以采用gdb调试器,步骤如下:1.使用gcc命令编译待调试的源码,并增加-g选项;2.运行gdb,输入文件名和参数,加载程序;3.设置断点;4.使用run命令运行程序;5.使用

根据这些可以查看系统调用的完整性,比如说服务器连接数一直涨,说明fd没有close,close调用在上边有缺失

strace -t -T -v -f -p 16705 -Te write 只看write系统调用

sudo gcore xxpid 生成dump文件

sudo dlv core binfile core.xxxx 调试coredump文件,查看调用栈、goroutines

查看系统级别日志 /var/log/messages

messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常,/var/log/messages 是您在做故障诊断时首先要查看的文件。

tcpdump -i lo -nnA 'port 7076' and 'tcp[13] &4 != 0 ' 抓rst包,发送给7076端口或者是7076端口发出去的

mac osx系统:sudo tcpdump -i lo0 -nnA 'port 3000'

(1)假设要debug的进程号为1000,运行如下命令:

$ gdb -p 1000

使用此命令即可使gdb附加到进程。

(2)载入libpython脚本

如果你的gdb是redhat或fedora等厂商修改过的,会有--python选项,使用此选项即可指定gdb启动时载入的Python扩展脚本(此脚本是扩展gdb的,不是我们需要debug的脚本)。

$ gdb --python /path/to/libpython .py -p 1000

如果安装的是GNU的gdb,就需要打开gdb后手动载入libpython.py脚本

(gdb) python

>import sys

>sys.path.insert(0, '/path/to/libpython.py' )

>import libpython

>end

(gdb)

这时就可以使用py-bt命令打印当前线程的Python traceback了。libpython还提供很多命令,例如py-print打印变量,py-locals打印所有本地变量等等,详细可打开libpython.py查看。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8343146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存