Visual D does not show fields in locals and cannot access through watch
Rainer Schuetze via Digitalmars-d-ide
digitalmars-d-ide at puremagic.com
Fri Jul 15 02:39:55 PDT 2016
On 15.07.2016 09:55, Eppason wrote:
> On Friday, 15 July 2016 at 06:33:54 UTC, Rainer Schuetze wrote:
>>
>>
>> On 15.07.2016 02:53, Eppason wrote:
>>> I have private static fields that visual D is not allowing me to see
>>> while debugging. I am flying blind, does not feel good!!
>>
>> You have to specify the fully qualified name including module name in
>> the watch window, i.e.
>>
>> module test;
>>
>> struct S
>> {
>> int foo()
>> {
>> return xyz;
>> }
>> static int xyz = 7;
>> }
>>
>> int main()
>> {
>> S s;
>> return s.foo();
>> }
>>
>> Depending on the debug engine used, watching S.xyz needs "test.S.xyz"
>> in mago and "test at S@xyz" with the VS engines. Mago has some extra code
>> to allow watching "xyz" when executing S.foo.
>
> Is this not considered a bug? What about for the complex template types
> like
>
> module library.configrators;
> struct PostHardThunk(Test, Actuator).
>
>
> Do I really have to type all that stuff out just to get a watch?
>
> Should the debugger not get the current module and type the cursor is at
> and use them as defaults?
>
>
I agree it can be troublesome, especially with template classes or
structs. The problem is that the compiler does not emit symbol lookup
information in the debug information. I think we'll have to add these at
some point.
What I do sometimes is to look at the disassembly of an access to the
global/static variable and drag the shown symbol into the watch window.
Unfortunately, this does not work with thread local variables, because
these are just relative offsets.
More information about the Digitalmars-d-ide
mailing list