1. dmesg
dmesg主要用于在程序崩潰掉的時候,顯示核心的相關資訊。
dmesg | tail -f #列印目前資訊
dmesg -c #列印後,清除緩沖區内容
dmesg -s 1024 #定義緩沖區大小
[email protected]:~$ 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指令主要檢視程序依賴的共享連結庫。
[email protected]:~$ 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
[email protected]:~$ ulimit -c unlimited
一般情況下,core dump後的檔案會在目前目錄,也有可能是統一的core dump目錄。統一目錄可以檢視:
cat /proc/sys/kernel/core_pattern
4. pstack
pstack一般檢視線程。對于多線程c程式,容易引起死鎖,使用pstack來檢查是否有死鎖情況。
[email protected]:~$ 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
[email protected]:~$ pstack 1811
4. gdb
參考gdb調試。