我在尝试调试一些看起来非常奇怪的行为时遇到了一些问题。例如,我们有:
static const char* LOG_FORMAT = "0x%02x,%.5f,";
并且指针没有明显的原因发生变化。有时是垃圾,有时是代码中其他地方定义的其他常量字符串(或部分)。我们偶尔也会看到代码跳转到不应该运行的不同部分(状态变量似乎在没有被要求的情况下更改)。有 2 或 3 种常见的故障模式,它们似乎是随机发生的。它是一个相对较大的代码库,添加或删除某些部分会改变故障行为(或完全删除它),即使这些部分从未被引用。
目前最好的理论是,这是一个与内存相关的问题,因为我们已经用细齿梳理了所有最近的变化,插入代码段来移动东西的简单行为似乎改变或删除了行为.
调试此问题或类似问题的最佳方法是什么?发现调试器有时很有用,而在其他时候却没有(但这可能是用户错误)。
进一步说明。ARM7,使用 Keil µVision 4 和 armcc v4.1 编译器。