While I'm not intimately familiar with IAR and the vagaries of their debugger, the general rule is that debuggers can't see text substitutions that are performed by the preprocessor, as these typically don't reach the object file.
The debugger can resolve the address of machine code instructions, to lines within the source. It can see symbols in the object file. It typically doesn't see the source code, and has to correlate symbolic information backward to present human orientated information. This would normally exist as "debug" or "browse" information generated by the compiler, code-generator and the IDE.
While your code might have "if (status & AT25DF_STA_BSY)" the compiler sees "if (status & 1)", and can conceivably optimize that into a form that doesn't include "1" at all. (ie bit#0, or shifts it into a carry/sign flag, etc)
You could watch "status", you could break point the test, and the taken/not-taken paths. You could also define the busy bit as a variable, and watch the run-time usage of that.
Use "enum" to define these constants. Not familiar with enum?
http://publications.gbdirect.co.uk/c_bo ... enums.htmlCheck the optimization settings, check that the compiler is generating debug/browsing information.
If you have a problem with IAR software you should probably discuss that with your support contact at IAR.