[Tools] strace & ltrace

在Linux底下開發可以利用strace以及ltrace這兩個工具來協助偵錯

在Linux底下開發可以利用strace以及ltrace這兩個工具來協助偵錯,

strace可以列出run time所用到的system call,ltrace則可列出run time所用到的library func。

幾種常用的使用方式:

1. strace/ltrace 直接加上指令,如: strace ls -l。

2. strace/trace 加上-o 選項的參數(檔名)而導到某個檔案,如: strace -o strace.out ls -l。

3. strace/trace 加上-p 選項的參數(Process ID)來觀測某個process的system call/library API,如: strace -p 12345。

 

用 ltrace ls 得到的結果,擷取部分內容:

用其中malloc(56)  = 0x01e56080來解釋:

C library中的malloc,傳入參數56,傳回結果是一個記憶體位址0x01e56080。

其他行以此類推,strace也是得到類似的形式,只是function為syscall。