在我的代碼中的某處,整數全局變量被破壞,實際上導致if條件檢查失敗。由於分配給變量的垃圾值,條件檢查失敗。如何在arm平臺的c程序中調試全局變量損壞?
這將是解決此問題的最佳方法?我已經創建了一個使用-Wl,-Map = transport.map選項的內存映射文件,但映射文件genereated只給出了關於變量的有限信息。
有人可以指導我解決這個問題嗎?
GDB調試器在目標板中不可用,但GDB服務器存在。
如果可能的話,有人可以幫助檢查它也與deadbeef指令?
在我的代碼中的某處,整數全局變量被破壞,實際上導致if條件檢查失敗。由於分配給變量的垃圾值,條件檢查失敗。如何在arm平臺的c程序中調試全局變量損壞?
這將是解決此問題的最佳方法?我已經創建了一個使用-Wl,-Map = transport.map選項的內存映射文件,但映射文件genereated只給出了關於變量的有限信息。
有人可以指導我解決這個問題嗎?
GDB調試器在目標板中不可用,但GDB服務器存在。
如果可能的話,有人可以幫助檢查它也與deadbeef指令?
使用好老硬核調試:
代碼的禁用一半,看看它仍然發生。
如果這一半工作,禁用另一半。
是找到好的「半」
迭代創意:如果你發現了糟糕的「半壁江山」,您在「宿舍」分裂這一點,等等。
最後你會發現導致麻煩的代碼行。
[_「Divide and rule」_](http://en.wikipedia.org/wiki/Divide_and_rule):) ... –
你能以某種方式爲有問題的代碼設置測試用例,以便在普通的PC平臺上運行它們嗎?如果是這樣,你可能會發現像[valgrind](http://valgrind.org/)這樣的工具對檢測內存損壞很有用。 –
你可以將gdb附加到gdbserver並在內存位置設置一個觀察點嗎? – pat