Ddbg 0.0.4 alpha release
Jascha Wetzel
"[firstname]" at mainia.de
Tue Mar 6 04:45:02 PST 2007
you need to add a watch with a cast manually: cast(char[])this.str
DMD doesn't add the full type to array symbols, yet, that's why ddbg
can't find out that this.str is a char[] by itself. therefore you have
to help out with the cast.
vanh wrote:
> Jascha Wetzel wrote:
>> it does when i try dickl's example.
>> can you give an example where it doesn't work?
>>
>> vanh wrote:
>>> Jascha Wetzel wrote:
>>>> oh - bug! :) fixed in 0.0.4.1 which i just put on the website.
>>>> pointers didn't get handled correctly by the expression evaluator and
>>>> therefore the "this" reference wasn't interpreted correctly.
>>>> thanks for the report!
>>>>
>>>> dickl wrote:
>>>>> Jascha Wetzel wrote:
>>>>>> Ddbg is a Win32 D Debugger
>>>>>>
>>>>>> http://ddbg.mainia.de/releases.html
>>>>>>
>>>>>> This release mainly adds support for type cast and associative
>>>>>> arrays.
>>>>>> Type casts can be used to workaround the missing array and enum
>>>>>> support
>>>>>> in DMD's debug symbols.
>>>>> dbbg is turning into a great tool !
>>>>>
>>>>> I took it from the docs that I should now be able to view contents of
>>>>> strings. This doesn't seem to be the case, at least for class members.
>>>>>
>>>>> Test program
>>>>> ---------------------
>>>>> import std.stdio;
>>>>>
>>>>> int main(char[][] args)
>>>>> {
>>>>> FOO foo = new FOO;
>>>>>
>>>>> return 0;
>>>>> }
>>>>>
>>>>> class FOO
>>>>> {
>>>>> private char [] str = "Hello";
>>>>>
>>>>> this()
>>>>> {
>>>>> writefln(str);
>>>>> }
>>>>> }
>>>>>
>>>>> Debug results. Note ddbg reports str as null
>>>>> -------------------
>>>>>> M:\D-projects\TEST1>ddbg test.exe
>>>>>> Ddbg v0.0.4 alpha - D Debugger
>>>>>> Copyright (c) 2007 Jascha Wetzel
>>>>>> http://ddbg.mainia.de/
>>>>>>
>>>>>> ->bp test.d:1
>>>>>> Breakpoint set: test.d:4 0x402010
>>>>>> ->r
>>>>>> ntdll.dll loaded
>>>>>> KERNEL32.dll loaded
>>>>>> USER32.dll loaded
>>>>>> GDI32.dll loaded
>>>>>> Breakpoint 0 hit
>>>>>> test.d:4 0x402010
>>>>>> int main(char[][] args)
>>>>>> ->in
>>>>>> test.d:6 0x402014
>>>>>> FOO foo = new FOO;
>>>>>> ->
>>>>>> test.d:15 0x402030
>>>>>> this()
>>>>>> ->
>>>>>> test.d:17 0x402037
>>>>>> writefln(str);
>>>>>> ->lsv
>>>>>> Scope: MFZC4test3FOO test.FOO._ctor
>>>>>> class test.FOO* this [ebp-4] = {str = 0x0041409800000005}
>>>>>> ->= (cast(char[])this.str)
>>>>>> null
>>>>>> ->
>>>>>>
>>> Well, I got the latest 0.0.4.1 or at least I thought I did. It's still
>>> didn't show the content of the str
>>> only the address of the string.
>>>
>>> vtp
>
> I just copy and past the above code into codeblock and check the watch
> window while
> stepping through it. All I see is str=0x0041408000000005
>
> vtp
More information about the Digitalmars-d-announce
mailing list