Linux下C/C++语言调试方法

 

1. dmesg

dmesg主要用于在进程崩溃掉的时候,显示内核的相关信息。

dmesg | tail -f   #打印当前信息
dmesg -c #打印后,清除缓冲区内容
dmesg -s 1024 #定义缓冲区大小
root@localhost:~$ dmesg | tail -f
[72728.302787] perf: interrupt took too long (3195 > 3167), lowering kernel.perf_event_max_sample_rate to 62500
[78343.525539] kauditd_printk_skb: 56 callbacks suppressed
[78343.857433] audit: type=1400 audit(1563488119.848:70): apparmor="STATUS" 

2. ldd

ldd命令主要查看进程依赖的共享链接库。

root@localhost:~$ ldd /usr/lib/ssl/bin/openssl 
	linux-vdso.so.1 (0x00007ffe7edfd000)
	libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007ff244a0a000)
	libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007ff2445c7000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff2441d6000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff243fd2000)
	/lib64/ld-linux-x86-64.so.2 (0x00007ff244c72000)

 

3. core文件

当程序偶发性崩溃的时候,我们可以借助系统的core dump来查看崩溃时候的错误信息。排查段错误等异常信息非常给力。

开启core dump,首选需要设置ulimit

root@localhost:~$ ulimit -c unlimited

一般情况下,core dump后的文件会在当前目录,也有可能是统一的core dump目录。统一目录可以查看:

cat /proc/sys/kernel/core_pattern

4. pstack

pstack一般查看线程。对于多线程c程序,容易引起死锁,使用pstack来检查是否有死锁情况。

root@localhost:~$ ps aux | grep gnatsd
root  1811  0.0  0.0 1743380 3744 pts/0    Sl   7月18   1:39 gnatsd
root 28640  0.0  0.0  21552  1024 pts/1    S+   15:36   0:00 grep --color=auto gnatsd
root@localhost:~$ pstack 1811

4. gdb

参考gdb调试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值