2016-11-16 39 views
1

我編譯的GDB 7.8用於運行linaro 3.12(2013)的Arndale 5250開發板上的本機調試。 GDB被配置爲「arm-linux-gnueabihf」並使用靜態鏈接庫進行構建。 它在電路板上工作正常,但處於「記錄和重放模式」。它在遇到printf語句時會生成以下消息:GDB記錄進程不支持ARM上的ioctl請求

"Process record and replay target doesn't support ioctl request 0x7efff06c() 
    (null)Process record: inferior program stopped.」 

    [process 2169] #1 stopped. 
    0x76f0f704 in ??() from /lib/arm-linux-gnueabihf/libc.so.6 

當繼續進一步時,它無法再調試。

(gdb) n 
    Cannot find bounds of current function 

我相信它是因爲目標平臺上缺少一些庫。 請注意,當我構建GDB時,我僅將其exe文件複製到目標Arndale板,而不是任何庫。我認爲靜態鏈接庫會完成任務。 任何想法如何在ARM架構上運行流程記錄和重放,就像我通常在x86機器上執行的那樣?

回答

0

gdb的過程記錄功能通過執行每個彙編指令並記錄其效果而起作用。當調用內核時,它也必須知道系統調用的影響。 ioctl在這裏提出了一個奇怪的挑戰,因爲有很多可能的iocctl調用。

從描述中聽起來好像你的libc使用gdb不知道的ioctl。在這種情況下,除了在gdb中實現對該調用的支持外,沒有其他解決方案。