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