Thread overview | ||||||
---|---|---|---|---|---|---|
|
March 18, 2017 use format int unittest | ||||
---|---|---|---|---|
| ||||
visual studio 2013,visuald0.44.1 dmd2.073.2 code like this import std.stdio; import std.string; int main(string[] argv) { writeln("Hello D-World!"); return 0; } unittest { string str=format("test format %d",1); writeln(str); } when debugger ,getting wrong. when change Debugger"Mago" to "Visual Studio",is OK |
March 19, 2017 Re: use format int unittest | ||||
---|---|---|---|---|
| ||||
Posted in reply to okeyes |
On 18.03.2017 14:54, okeyes wrote:
> visual studio 2013,visuald0.44.1 dmd2.073.2
>
> code like this
>
> import std.stdio;
> import std.string;
>
> int main(string[] argv)
> {
> writeln("Hello D-World!");
> return 0;
> }
>
> unittest
> {
> string str=format("test format %d",1);
> writeln(str);
> }
>
>
> when debugger ,getting wrong.
>
> when change Debugger"Mago" to "Visual Studio",is OK
I guess what you are seeing is a program stop at an Exception in std.format that is expected to be thrown by std.format unittests. These are compiled into your executable due to the way they are defined as part of a template.
The simplest workaround is to sigh and press "Continue".
Alternatively, you can disable stopping on exceptions when they are thrown (unhandled exceptions will still be shown). For Mago, that is done by unchecking "D Exceptions" in the Exceptions window (Ctrl+Alt+E). The Visual Studio debugger treats it as a "Win32 Exception", uncheck "D Exception" below that entry. The downside is that the debugger will also not break for exceptions that you want to debug.
|
April 15, 2017 Re: use format int unittest | ||||
---|---|---|---|---|
| ||||
Posted in reply to okeyes | On Saturday, 18 March 2017 at 13:54:22 UTC, okeyes wrote: > visual studio 2013,visuald0.44.1 dmd2.073.2 > > code like this > > import std.stdio; > import std.string; > > int main(string[] argv) > { > writeln("Hello D-World!"); > return 0; > } > > unittest > { > string str=format("test format %d",1); > writeln(str); > } > > > when debugger ,getting wrong. > > when change Debugger"Mago" to "Visual Studio",is OK int main(string[] argv) { writeln("Hello D-World!"); string str=format("test format %d",1); return 0; } unittest { } get this err. First-chance exception: D Exception Unterminated format specifier: "%" at C:\D\dmd2\windows\bin\..\..\src\phobos\std\format.d(1103) using format and using unittest. |
April 15, 2017 Re: use format int unittest | ||||
---|---|---|---|---|
| ||||
Posted in reply to okeyes |
On 15.04.2017 09:28, okeyes wrote:
> On Saturday, 18 March 2017 at 13:54:22 UTC, okeyes wrote:
>> visual studio 2013,visuald0.44.1 dmd2.073.2
>>
>> code like this
>>
>> import std.stdio;
>> import std.string;
>>
>> int main(string[] argv)
>> {
>> writeln("Hello D-World!");
>> return 0;
>> }
>>
>> unittest
>> {
>> string str=format("test format %d",1);
>> writeln(str);
>> }
>>
>>
>> when debugger ,getting wrong.
>>
>> when change Debugger"Mago" to "Visual Studio",is OK
>
>
> int main(string[] argv)
> {
> writeln("Hello D-World!");
> string str=format("test format %d",1);
> return 0;
> }
>
>
> unittest
> {
> }
>
> get this err.
>
> First-chance exception: D Exception Unterminated format specifier: "%"
> at C:\D\dmd2\windows\bin\..\..\src\phobos\std\format.d(1103)
>
> using format and using unittest.
That's the same issue, it doesn't matter where std.format is instantiated. Being a template its unittests are still compiled in.
|
Copyright © 1999-2021 by the D Language Foundation