2014-09-04 55 views
0

請有人可以指導我爲什麼gdb需要一個RAM和目標ROM的調試內存映射。爲什麼gdb需要內存映射的ram和ROM的目標調試

如果我們在gdb中啓用詳細的控制檯,那麼我們可以看到一些清晰顯示的痕跡: 以及ROM。

該內存是用於代碼放置還是用於其他目的.....請澄清我。

謝謝。

+0

?? ............... – sbunny 2014-09-04 06:49:39

回答

0

如果您正在討論使用gdb的mem命令定義的內存映射,那是因爲gdb需要知道如何處理內存。

默認情況下,它假定它可以寫入所有內存並緩存所有內存。

這對於不同的原因很重要,一種最常見的情況是用戶試圖設置斷點。默認情況下使用「軟件」斷點,這需要gdb用特殊斷點指令在設置斷點的地址處替換原始指令。如果內存是隻讀的,那麼它不能這樣做,並且必須使用硬件斷點,這些斷點在數量上有限,甚至可能不可用。定義了內存區域後,用戶不必手動手動選擇最合適的斷點指令(break/hbreak),因爲gdb會自動在只讀區域中使用硬件斷點。

詳情請見this chapter of GDB manual

+0

感謝您的信息... 其實我正在使用基於Eclipse的調試。 IDE提供的目標板配置文件將RAM的大小指定爲256KB,而saber lite的數據表顯示它具有1 GB的內存? – sbunny 2014-09-04 09:52:55

+0

然後可能初始化代碼依賴於僅具有256kB內存的板,並且在沒有問題的情況下您將無法使用更多內存(堆棧通常位於內存頂部,並且堆也可以僅擴展到頂部)有問題的更多細節。這個配置文件定義的內容取決於使用的IDE。 – dbrank0 2014-09-04 12:56:35