在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。