April 29, 2007 [ddbg] lsv shows duplicated variables | ||||
---|---|---|---|---|
| ||||
Hi! I don't know if this is the intended behaviour, but for the following code: --------------------------------------------------------------------- module main; void main() { for(int i = 0; i < 10; i++) { // Line 4 } for(int i = 0; i < 10; i++) { } for(int i = 0; i < 10; i++) { // Line 8 } } --------------------------------------------------------------------- ##################################################################### Loading symbols from main ->bp main:4 Breakpoint set: main.d:4 0x402014 -> Breakpoint set: main.d:4 0x402014 ->r ntdll.dll loaded KERNEL32.dll loaded USER32.dll loaded GDI32.dll loaded Breakpoint 0 hit at main.d:4 0x402014 for(int i = 0; i < 10; i++) { ->lsv Scope: _Dmain i = 4211075 i = 18 i = 4272652 -> ##################################################################### That is, the "i" variable is shown three times, even though the next two aren't visible yet. If you set a breakpoint in a next line, for example line 8, the "i" variable is also shown three times. I think one "i" should be shown always. The problem is that I'm integrating ddbg in Descent, and in the varaibles view I use the "lsv" command, so the "i" variable appears three times. A hack would be, if a variable appears many times, send "= i" to the debugger and keep the one with that value, but... if it can be fixed in ddbg, much better. |
April 29, 2007 Re: [ddbg] lsv shows duplicated variables | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ary Manzana | DMD doesn't emit symbols for scopes below procedure level (bugzilla #1201). therefore Ddbg can't tell which one is the right variable. when evaluating an expression with an ambiguous identifier, Ddbg simply chooses the first instance it comes across.
the last time i checked, MSVC had the same problem. although CodeView provides a solution.
Ary Manzana wrote:
> Hi!
>
> I don't know if this is the intended behaviour, but for the following code:
>
> ---------------------------------------------------------------------
> module main;
>
> void main() {
> for(int i = 0; i < 10; i++) { // Line 4
> }
> for(int i = 0; i < 10; i++) {
> }
> for(int i = 0; i < 10; i++) { // Line 8
> }
> }
> ---------------------------------------------------------------------
>
> #####################################################################
> Loading symbols from main
> ->bp main:4
> Breakpoint set: main.d:4 0x402014
> ->
> Breakpoint set: main.d:4 0x402014
> ->r
> ntdll.dll loaded
> KERNEL32.dll loaded
> USER32.dll loaded
> GDI32.dll loaded
> Breakpoint 0 hit at main.d:4 0x402014
> for(int i = 0; i < 10; i++) {
> ->lsv
> Scope: _Dmain
> i = 4211075
> i = 18
> i = 4272652
> ->
> #####################################################################
>
> That is, the "i" variable is shown three times, even though the next two aren't visible yet. If you set a breakpoint in a next line, for example line 8, the "i" variable is also shown three times. I think one "i" should be shown always.
>
> The problem is that I'm integrating ddbg in Descent, and in the varaibles view I use the "lsv" command, so the "i" variable appears three times. A hack would be, if a variable appears many times, send "= i" to the debugger and keep the one with that value, but... if it can be fixed in ddbg, much better.
|
Copyright © 1999-2021 by the D Language Foundation