In a post I otherwise agree with, raph makes the claim:
Macro substitution, while an appealingly powerful abstraction, is absolutely hopeless when it comes to mission-critical error recovery.If raph is talking about m4 (which in the context of a discussion of autoconf's failings is possible), this seems fair. But the paragraph suggests this applies to all languages that support macros. lukeg points out that CMUCL supports sophisticated error messages for macro expansion. Even in their absence, I can say from my own macro-heavy programming style in various LISPs that I don't find debugging macros to be especially difficult: most debugging time is spent on the procedural side. Also C programmers make heavy use of macros, and again one doesn't hear from them how difficult their (admittedly less sophisticated) macros are to debug. The difference between these two languages and m4, is that for them it is a matter of using transformations on program source to make source management easier and provide shortcuts to a more intuitive programming idiom. In the case of m4, it is the source of all computational power.
Postscript: Google anomaly
I've stumbled across an anomalous search query on Google: at the moment it gives two results, with the promise of more but clicking on "More results from hnn.us" gives almost identical results but for more "site:hnn.us" strings being added to the query. Odd.