@@ -56,11 +56,11 @@ $(P The visual studio debuggers obviously had 64-bit support, and mago followed
5656$(H2 VS 2012-2013 New debug engine)
5757
5858$(P Starting with Visual Studio 2012, Microsoft introduced a new debugger that replaced
59- the native debug engine. Unfortunately, it lost some of the capabilities of the
60- preceding debug engine. This includes displaying variables in the Watch Window and
59+ the native debug engine. Unfortunately, it had some incompatibilites with the
60+ preceding debug engine. This includes displaying D variables in the Watch Window and
6161interpretation of the visualizer macros in autoexp.dat. The new engine has
62- extended visualizer capabilities, but these are targeted to C/C++ and don't work with
63- D syntax.)
62+ extended visualizer capabilities, but these are targeted to C/C++ and don't work well
63+ with D syntax.)
6464
6565$(P You can switch back to the old debug engine by going to Tools->Options and then under the debugger
6666settings, turn on native edit and continue. This is a global setting and will also affect your
@@ -69,25 +69,27 @@ C++ projects, though.)
6969$(P Mago is uneffected by this change.
7070The VS 2013 debugger engine fixed some of the problems with displaying local variables.)
7171
72+ <a id="concord"></a>
7273$(H2 VS 2015 Concord extensions)
7374
7475$(P With the next version of the debug engine supporting "native edit and continue", the fallback to
7576the old debug engine no longer works in VS 2015. Instead Microsoft
7677released information about the extensibility of this debug engine (introduced with VS2012) called
7778$(LINK2 https://github.com/Microsoft/ConcordExtensibilitySamples/wiki/Overview, Concord),
7879late in 2015. It consists of more modular components than older engines. This allows taking
79- advantage of most features of the debug engine, but just replace language specific
80+ advantage of most features of the debug engine by just replacing language specific
8081parts, i.e. the expression evaluator. In addition, debugging mixed languages is no problem
8182anymore.)
8283
83- $(P Taking the expression evaluator out of Mago allowed to implement this for D pretty easily:)
84+ $(P Using Mago's expression evaluator allowed to implement this for D pretty easily:)
8485
8586 <div align="center"><img src="images/concord_mark.png" width="90%"/></div>
8687
8788$(P The debugger engine needs to detect the source language of the code location. This information
8889is added to the debug information starting with dmd 2.072 when compiled for COFF object
8990files (-m64 or -m32mscoff) with -g, but not with
90- -gc, i.e. you should select debug info for Mago even when using the VS debug engine.)
91+ -gc, i.e. you should select debug info for Mago even when using the VS debug engine.) Unfortunately,
92+ LDC does not yet emit this source language information.
9193
9294<a id="recommendation"></a>
9395$(H3 Recommendation for VS 2015)
101103 $(LI choose the Visual Studio debugger on the project configuration page Debugging)
102104)
103105
104- $(P If you are using the new Visual C/C++ project integration, all you have to do is select debug information
105- "for D debug engines" on the project configuration page "D Compiler->Code generation".)
106+ $(P If you are using the new $(VDLINK vcxproject, Visual C/C++ project integration) , all you have to do is
107+ select debug information "for D debug engines" on the project configuration page "D Compiler->Code generation".)
106108
107109$(H2 Exceptions)
108110
@@ -112,12 +114,14 @@ is thrown by the debuggee. With earlier versions, you'll have to add an entry wi
112114
113115$(H3 Exceptions with Mago)
114116
115- $(P Mago displays exceptions thrown by the debuggee in the output window. You can also stop execution
117+ $(P The Mago debug engine displays exceptions thrown by the debuggee in the output window. You can also stop execution
116118by enabling the respective box in the Debug->Exception dialog. Due to a bug, you currently cannot
117119simply enable the "D Exceptions" entry, but must select the specific exceptions while keeping the
118120"D Exceptions" entry unchecked. So, the dialog should look something like this:)
119121
120122$(IMG_CENTER images/d_exceptions.png)
121123
124+ Please note that these specific exception settings only apply to the Mago debug engine, not the Concord extension.
125+
122126Macros:
123127 TITLE=Debugging
0 commit comments