diff --git a/documentation/debugging.sgml b/documentation/debugging.sgml index 151af97e291..4b579d8ccbe 100644 --- a/documentation/debugging.sgml +++ b/documentation/debugging.sgml @@ -427,6 +427,14 @@ TRACE("(%d, %p, ...)\n", par1, par2, ...); + + + if you want to name a parameter, use = : + +TRACE("(fd=%d, file=%s): stub\n", fd, name); + + + for stubs, you should output a FIXME @@ -440,16 +448,37 @@ FIXME("(%x, %d, ...): stub\n", par1, par2, ...); try to output one line per message. That is, the format string should contain only one \n and it - should always appear at the end of the string. (there are - many reasons for this requirement, one of them is that - each debug macro adds things to the beginning of the line) + should always appear at the end of the string. - if you want to name a parameter, use = : + if the output string needs to be dynamically constructed, + render it in memory before outputting it: -FIXME("(fd=%d, file=%s): stub\n", fd, name); +char buffer[128] = ""; + +if (flags & FLAG_A) strcat(buffer, "FLAG_A "); +if (flags & FLAG_B) strcat(buffer, "FLAG_B "); +if (flags & FLAG_C) strcat(buffer, "FLAG_C "); +TRACE("flags = %s\n", buffer); + + Most of the time however, it is better to create a helper + function that renders to a temporary buffer: + +static const char *dbgstr_flags(int flags) +{ + char buffer[128] = ""; + + if (flags & FLAG_A) strcat(buffer, "FLAG_A "); + if (flags & FLAG_B) strcat(buffer, "FLAG_B "); + if (flags & FLAG_C) strcat(buffer, "FLAG_C "); + return wine_dbg_sprintf("flags = %s\n\n", buffer); +} + +... + +TRACE("flags = %s\n", dbgstr_flags(flags));