Ddbg 0.0.4 alpha release

vanh vanh at dslextreme.com
Tue Mar 6 17:45:20 PST 2007


Jascha Wetzel wrote:
> 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
Now I know. It a bit of a pain for a very short while I hope.

vtp



More information about the Digitalmars-d-announce mailing list