linux程序在线调试,linux线上程序问题调试命令

前提:

ps -ef | grep xxxx 获取进程的pid以及端口

lsof -i:8080 | grep ES 根据进程端口号查看建立的所有连接,这个针对别人连过来的可以,但是不方便看自己连别人的

sudo lsof -p 21449 -nP | grep TCP 根据进程pid查看建立的所有连接,包括了自己连别人与别人连自己的所有连接

1.跟踪线上进程的系统调用

案例:sudo strace -t -T -v -f -p 41398

[pid 41424] 14:47:02 <... read resumed> "HTTP/1.1 200 OK\r\nServer: nginx/1"..., 4096) = 186 <0.000024>

[pid 41413] 14:47:02 getsockname(61,

[pid 41412] 14:47:02 read(178,

[pid 41402] 14:47:02 futex(0xc420040d48, FUTEX_WAIT, 0, NULL

[pid 41424] 14:47:02 write(1, "extinterface|2018-12-29 14:47:02"..., 373

[pid 41413] 14:47:02 <... getsockname resumed> {sa_family=AF_INET, sin_port=htons(17784), sin_addr=inet_addr("100.96.94.74")}, [16]) = 0 <0.000122>

[pid 41412] 14:47:02 <... read resumed> 0xc420321000, 4096) = -1 EAGAIN (Resource temporarily unavailable) <0.000133>

[pid 41424] 14:47:02 <... write resumed> ) = 373 <0.000039>

[pid 41413] 14:47:02 getpeername(61,

[pid 41412] 14:47:02 getsockopt(41, SOL_SOCKET, SO_ERROR

[pid 41424] 14:47:02 write(4, "extinterface|2018-12-29 14:47:02"..., 372

[pid 41413] 14:47:02 <... getpeername resumed> {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.219.7.37")}, [16]) = 0 <0.000043>

[pid 41424] 14:47:02 <... write resumed> ) = 372 <0.000027>

[pid 41412] 14:47:02 <... getsockopt resumed> , [2337776331577622528], [4]) = 0 <0.000066>

[pid 41413] 14:47:02 write(61, "\375\367\1\0\0\1\0\0\0\0\0\0\4msdk\rtencent-cloud\3"..., 40

[pid 41425] 14:47:02 write(1, "wx auth result : &{Ret:0 Msg:ok}"..., 33

[pid 41424] 14:47:02 read(18,

[pid 41412] 14:47:02 getpeername(41,

[pid 41400] 14:47:02 <... pselect6 resumed> ) = 0 (Timeout) <0.000431>

[pid 41425] 14:47:02 <... write resumed> ) = 33 <0.031962>

[pid 41424] 14:47:02 <... read resumed> 0xc4208ac000, 4096) = -1 EAGAIN (Resource temporarily unavailable) <0.031990>

[pid 41413] 14:47:02 <... write resumed> ) = 40 <0.032038>

[pid 41412] 14:47:02 <... getpeername resumed> {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("10.217.105.104")}, [16]) = 0 <0.032005>

[pid 41425] 14:47:02 write(176, "*1\r\n$4\r\nPING\r\n", 14

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

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

2.线上进程coredump调试

sudo gcore xxpid 生成dump文件

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

3.进程级别、系统级别异常

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

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

4.tcpdump抓包

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

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

5.快速搜索目录下的文件中包含的关键字内容

搜索当前目录下所有文件中包含25593516关键字的行:grep "25593516" ./* | more

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值