2015-05-01 55 views
0

在我的代碼中的某處,整數全局變量被破壞,實際上導致if條件檢查失敗。由於分配給變量的垃圾值,條件檢查失敗。如何在arm平臺的c程序中調試全局變量損壞?

這將是解決此問題的最佳方法?我已經創建了一個使用-Wl,-Map = transport.map選項的內存映射文件,但映射文件genereated只給出了關於變量的有限信息。

有人可以指導我解決這個問題嗎?

GDB調試器在目標板中不可用,但GDB服務器存在。

如果可能的話,有人可以幫助檢查它也與deadbeef指令?

+0

你能以某種方式爲有問題的代碼設置測試用例,以便在普通的PC平臺上運行它們嗎?如果是這樣,你可能會發現像[valgrind](http://valgrind.org/)這樣的工具對檢測內存損壞很有用。 –

+1

你可以將gdb附加到gdbserver並在內存位置設置一個觀察點嗎? – pat

回答

2

使用好老硬核調試

代碼的禁用一半,看看仍然發生。

如果這一半工作,禁用另一半。

是找到好的「半」

迭代創意:如果你發現了糟糕的「半壁江山」,您在「宿舍」分裂這一點,等等。

最後你會發現導致麻煩的代碼行。

+0

[_「Divide and rule」_](http://en.wikipedia.org/wiki/Divide_and_rule):) ... –