2017-09-02 90 views
0

有沒有辦法將step轉換成printf()或atof()等標準函數,然後執行finish返回主程序以獲取返回值?LLDB「進入」和「完成」以獲得標準函數的返回值

隨着GDB我可以做這樣的:

(gdb) step 
14   float di = atof(argv[1]); 
(gdb) step 
atof (nptr=0x7fffffffe0c6 "5.8") at atof.c:27 
27  atof.c: No such file or directory. 
(gdb) finish 
Run till exit from #0 atof (nptr=0x7fffffffe0c6 "5.8") at 
atof.c:27 
0x00005555555547d1 in main (argc=2, argv=0x7fffffffdd18) at 
circumf.c:14 
14   float di = atof(argv[1]); 
Value returned is $1 = 5.7999999999999998 

但是當我嘗試這與LLDB它的步驟「過度」的所有標準功能。它適用於程序內部的功能,我可以介入這些功能,但不適用於標準功能。我想這是一個功能,但有沒有辦法解決它?我也用LLDB使用step

是否有其他方法可以從LLDB中的標準函數獲取返回值?

回答

0

和gdb一樣,lldb會進入你有調試信息的任何函數。它將跳過沒有調試信息的任何函數。你所描述的行爲差異聽起來更像lldb沒有/沒有找到你的標準庫solibs的調試信息。

+0

謝謝,我試着GDB和LLDB在同一臺機器上,然後我得到了一致的行爲。我知道在不同的機器上運行時,我在LLDB和GDB之間只有不同的行爲。所以你是正確的,差別可能是我運行LLDB的機器上缺少調試信息。 – jackbenny

相關問題