關於使用strace除錯網路程式

2021-06-25 20:42:33 字數 576 閱讀 1938

strace 簡介

strace 命令是一種強大的工具, 能夠顯示任何由使用者空間程式發出的系統呼叫. strace 顯示這些呼叫的引數並返回符號形式的值. strace 從核心接收資訊, 而且無需以任何特別的方式來構建核心. strace 的每一行輸出包括系統呼叫名稱, 然後是引數和返回值.

比如close-wait狀態過多的情況下

如果僅僅考慮服務**有問題的話,可以考慮伺服器**在接受到fin後,沒有發出fin。有可能沒有呼叫close函式關閉socket。

還有可能是程式阻塞在某個io上。

那怎麼快速定位到這行**上呢。

就可以使用strace工具。

strace -o look_problem ./service_name

系統呼叫到結果就會放到look_problem檔案中。 ./service_name是你的伺服器的名字。

通過look_problem可以看到函式呼叫的結果,如果看到沒有close函式的話,那說明可能是伺服器在收到fin後沒有呼叫close函式。

如果look_problem日誌打在乙個io函式上,那說明程式可能阻塞在某個io上了。就可以很快查處問題所在。

使用linux的strace來除錯程式系統呼叫

命令用法 讓我們看看strace命令如何追蹤乙個程式的執 況。最簡單的形式,strace後面可以跟任何命令。它將列出許許多多的系統呼叫。一開始,我們並不能理解所有的輸出,但是如果你正在尋找一些特殊的東西,那麼你應該能從輸出中發現它。linux strace命令詳解 linux strace 跟蹤程序...

Unix Linux使用core檔案除錯程式

事實上,並不是只有sigsegv訊號產生coredump,還有下面一些訊號也產生 sigfsz 超過晚間長度限制 終止w core sigabrt 異常終止 abort 終止w core sigbus 硬體故障 終止w core sigemt 硬體故障 終止w core sigfpe 算術異常 終止...

使用gdb gdbserver除錯嵌入式程式

如果環境沒有提供交叉編譯程式gdbserver 可以參考交叉編譯步驟 是我除錯的例子,它在客戶端的執行命令如下.monitorall qws font wenquanyi 1.target 端 gdbserver multi 192.168.1.101 1234 啟動gdbserver,監聽192....