Hi!
On 18.07.2010 12:53, Bernd wrote:
It is absolutely not understandable why GDB captures these messages
while it is completely unable to display them in any meaningful
manner. It will capture the messages (it will replace and eat the
whole function call, not only the message!) and then declare them
wrongly as "warnings" and bury them in all the other warnings it does
generate, Lazarus does not have any chance to extract only the debug
messages from the output of GDB even if it wanted to. These messages
are basically lost, once GDB gets its hands on them. GDB completely
sabotages the usage of OutputDebugString().
If there is no way to tell GDB to either stop intercepting these
messages or at least display them in a more meaningful way or pass
them on to where they were meant to go (the windows API) instead of
silently *eating* the whole function call, then this is a bug in GDB.
These debug messages are none of GDB's business as long as it does not
provide any way do actually *display* them in a meaningful way.
GDB registers itself as a debugger with Windows for that application and
thus Windows itself is routing all messages that are sent with
OutputDebugString to that registered debugger. DebugView does the same
(registering itself as a debugger for an application) but does only
print the OutputDebugString messages without doing anything else that a
debugger might do. You can only run one debugger at a time attached to a
single application. It's not a bug in GDB but a rule of Windows and its API.
The only possible way to "fix" this in GDB would be to let it output all
messages it got with OutputDebugString itself and attaching DebugView to
GDB (this would be needed to be done in the GDB source though).
Regards,
Sven
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus