Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
May 12, 2019 Windows / redirect STDERR to see assert messages | ||||
---|---|---|---|---|
| ||||
When developing Windows GUI applications I use:
// detach from console and attach to a new one, works for x86 and x86_64
FreeConsole();
AllocConsole();
freopen("CONIN$", "r", stdin);
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
so that the GUI app opens a console for writeln() output etc. I assumed this should work for assert() messages as well. But it seems it doesn't. If an assert fails, I don't see any output. Is assert using something else? What's wrong about this approach?
--
Robert M. Münch
http://www.saphirion.com
smarter | better | faster
|
May 12, 2019 Re: Windows / redirect STDERR to see assert messages | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert M. Münch | On Sunday, 12 May 2019 at 13:39:15 UTC, Robert M. Münch wrote:
> If an assert fails, I don't see any output. Is assert using something else? What's wrong about this approach?
You might need to catch all the throwable exceptions and print your way instead...
|
May 14, 2019 Re: Windows / redirect STDERR to see assert messages | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert M. Münch | On Sunday, 12 May 2019 at 13:39:15 UTC, Robert M. Münch wrote:
> When developing Windows GUI applications I use:
>
> // detach from console and attach to a new one, works for x86 and x86_64
> FreeConsole();
> AllocConsole();
>
> freopen("CONIN$", "r", stdin);
> freopen("CONOUT$", "w", stdout);
> freopen("CONOUT$", "w", stderr);
>
> so that the GUI app opens a console for writeln() output etc. I assumed this should work for assert() messages as well. But it seems it doesn't. If an assert fails, I don't see any output. Is assert using something else? What's wrong about this approach?
Are you sure the last call to freopen doesn't return NULL? You are opening the same file twice and I'm not sure that works. Test with `stderr.writeln("test")`.
Bastiaan.
|
May 14, 2019 Re: Windows / redirect STDERR to see assert messages | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert M. Münch | Assert failure uses system IO API, try https://docs.microsoft.com/en-us/windows/console/setstdhandle |
May 14, 2019 Re: Windows / redirect STDERR to see assert messages | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On 2019-05-12 22:46:37 +0000, Adam D. Ruppe said: > You might need to catch all the throwable exceptions and print your way instead... Adam, thanks, that was the missing link. I thought that assert() is dumb hard exit with a short message and not throwing a full exception. -- Robert M. Münch http://www.saphirion.com smarter | better | faster |
Copyright © 1999-2021 by the D Language Foundation