Thread overview | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
May 10, 2010 Latest GDB version problems | ||||
---|---|---|---|---|
| ||||
Hi, I tried to debug program in gdb (with d support) but with no big success. I'm on kubuntu 10.04 I compiled gdb from trunk. 7.1.50.20100504 I use the -gc switch with dmd of course. With this example (brakeboint at line 8) 1. import std.stdio; 2. 3. 4. void main() 5. { 6. int i = 1; 7. string s = "Hello"; 8. float f; 9. } gdb produces: (gdb) info locals i = 1 s = 578159222890430469 f = 9.55146781e-38 (gdb) show language The current source language is "auto; currently d". worse is that following example: 1. import std.stdio; 2. 3. 4. void main() 5. { 6. int i = 1; 7. string s = "Hello"; 8. float f; 9. writeln ("Hello"); 10.} gives seg falut: Reading symbols from /home/pio/dev/d/projects/cb_test/hello...Segmentation fault Does anyone can work with gdb on linux? Cheers Piotrek |
May 10, 2010 Re: Latest GDB version problems | ||||
---|---|---|---|---|
| ||||
Posted in reply to Piotrek | W dniu 10.05.2010 20:48, Piotrek pisze:
> Hi,
>
> I tried to debug program in gdb (with d support) but with no big success.
>
> I'm on kubuntu 10.04
>
> I compiled gdb from trunk. 7.1.50.20100504
>
> I use the -gc switch with dmd of course.
>
The dmd version is 2.045.
|
May 10, 2010 Re: Latest GDB version problems | ||||
---|---|---|---|---|
| ||||
Posted in reply to Piotrek | On 10/05/10 19:48, Piotrek wrote: > (gdb) info locals > i = 1 > s = 578159222890430469 > f = 9.55146781e-38 > (gdb) show language > The current source language is "auto; currently d". You are not using a version of gdb with D support if s is not displayed as a string. This said, I've only ever looked at variables using print or a backtrace, could you try 'p s' and see what result it gives? If it's the same you aren't using a D capable version of gdb. This said, it should be working in that version of gdb, I guess there's some other issues there if this is the case. > Reading symbols from > /home/pio/dev/d/projects/cb_test/hello...Segmentation fault This is a gdb issue, not a D issue, you should report this issue to the gdb developers so they can add a test case to their test suite and fix the bug :) > Does anyone can work with gdb on linux? I do, and it works great for me :) This said, if you have issues with it it's good to voice them to either the D community or the gdb devs if appropriate so we can work out any issues and make debugging D on linux/freebsd/os x etc a pleasant experience. It isn't right now, but the situation's far better than it was a few weeks ago (it was impossible to do anything non-trivial then :P) > Cheers > Piotrek |
May 10, 2010 Re: Latest GDB version problems | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert Clipsham | W dniu 10.05.2010 21:02, Robert Clipsham pisze: > You are not using a version of gdb with D support if s is not displayed > as a string. This said, I've only ever looked at variables using print > or a backtrace, could you try 'p s' and see what result it gives? (gdb) p s $1 = 578159222890430469 No luck :( > If it's the same you aren't using a D capable version of gdb. This said, it > should be working in that version of gdb, I guess there's some other > issues there if this is the case. > Probably >> Does anyone can work with gdb on linux? > > I do, and it works great for me :) So I assume you are working on hand patched version of gdb - not the unchanged one from the official repository? > This said, if you have issues with it > it's good to voice them to either the D community or the gdb devs if > appropriate so we can work out any issues and make debugging D on > linux/freebsd/os x etc a pleasant experience. It isn't right now, but > the situation's far better than it was a few weeks ago (it was > impossible to do anything non-trivial then :P) I try next gdb snapshot and then if it doesn't work I will fill bug report. Cheers Piotrek |
May 11, 2010 Re: Latest GDB version problems | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert Clipsham | On Mon, 10 May 2010, Robert Clipsham wrote:
> On 10/05/10 19:48, Piotrek wrote:
> > (gdb) info locals
> > i = 1
> > s = 578159222890430469
> > f = 9.55146781e-38
> > (gdb) show language
> > The current source language is "auto; currently d".
>
> You are not using a version of gdb with D support if s is not displayed as a string. This said, I've only ever looked at variables using print or a backtrace, could you try 'p s' and see what result it gives? If it's the same you aren't using a D capable version of gdb. This said, it should be working in that version of gdb, I guess there's some other issues there if this is the case.
>
> > Reading symbols from /home/pio/dev/d/projects/cb_test/hello...Segmentation fault
>
> This is a gdb issue, not a D issue, you should report this issue to the gdb developers so they can add a test case to their test suite and fix the bug :)
>
> > Does anyone can work with gdb on linux?
>
> I do, and it works great for me :) This said, if you have issues with it it's good to voice them to either the D community or the gdb devs if appropriate so we can work out any issues and make debugging D on linux/freebsd/os x etc a pleasant experience. It isn't right now, but the situation's far better than it was a few weeks ago (it was impossible to do anything non-trivial then :P)
>
> > Cheers
> > Piotrek
For what it's worth, I've still had lots of problems with gdb (from cvs) + dmd from svn. It's certainly LOTS better, but there's lots left to fix. Unfortunatly I haven't spent the time to try to reduce the problem down at all. I'll do that, but just haven't yet.
Later,
Brad
|
June 02, 2013 Re: Latest GDB version problems | ||||
---|---|---|---|---|
| ||||
Posted in reply to Piotrek | On Monday, 10 May 2010 at 19:25:05 UTC, Piotrek wrote:
> W dniu 10.05.2010 21:02, Robert Clipsham pisze:
>> You are not using a version of gdb with D support if s is not displayed
>> as a string. This said, I've only ever looked at variables using print
>> or a backtrace, could you try 'p s' and see what result it gives?
>
> (gdb) p s
> $1 = 578159222890430469
>
> No luck :(
try this:
(gdb) x/dwx &mystirng
0xbffff4f4: 0x0000003c <- size of string
(gdb)
0xbffff4f8: 0xb7ca2540 <- ptr to the string
(gdb) x/s 0xb7ca2540
0xb7ca2540: "this is my string"
(gdb)
regards.
|
June 02, 2013 Re: Latest GDB version problems | ||||
---|---|---|---|---|
| ||||
Posted in reply to sha0coder | >> (gdb) p s
>> $1 = 578159222890430469
>>
>> No luck :(
>
> try this:
>
> (gdb) x/dwx &mystirng
> 0xbffff4f4: 0x0000003c <- size of string
> (gdb)
> 0xbffff4f8: 0xb7ca2540 <- ptr to the string
>
> (gdb) x/s 0xb7ca2540
> 0xb7ca2540: "this is my string"
> (gdb)
add this macro to your ~/.gdbinit
define ps
x/s *(unsigned long *)(((char *)&$arg0)+4)
end
then you can do:
(gdb) ps myString
0xb7ca2540: "this is my string"
|
June 02, 2013 Re: Latest GDB version problems | ||||
---|---|---|---|---|
| ||||
Posted in reply to sha0coder | the post ist more than 3 years old
Am 02.06.2013 07:04, schrieb sha0coder:
>>> (gdb) p s
>>> $1 = 578159222890430469
>>>
>>> No luck :(
>>
>> try this:
>>
>> (gdb) x/dwx &mystirng
>> 0xbffff4f4: 0x0000003c <- size of string
>> (gdb)
>> 0xbffff4f8: 0xb7ca2540 <- ptr to the string
>>
>> (gdb) x/s 0xb7ca2540
>> 0xb7ca2540: "this is my string"
>> (gdb)
>
> add this macro to your ~/.gdbinit
>
>
> define ps
> x/s *(unsigned long *)(((char *)&$arg0)+4)
> end
>
> then you can do:
>
> (gdb) ps myString
> 0xb7ca2540: "this is my string"
>
|
June 02, 2013 Re: Latest GDB version problems | ||||
---|---|---|---|---|
| ||||
Posted in reply to dennis luehring | And still, gdb doesn't recognize D strings.
Thanks for the Macro!
Am 02.06.2013 08:08, schrieb dennis luehring:
> the post ist more than 3 years old
>
> Am 02.06.2013 07:04, schrieb sha0coder:
>>>> (gdb) p s
>>>> $1 = 578159222890430469
>>>>
>>>> No luck :(
>>>
>>> try this:
>>>
>>> (gdb) x/dwx &mystirng
>>> 0xbffff4f4: 0x0000003c <- size of string
>>> (gdb)
>>> 0xbffff4f8: 0xb7ca2540 <- ptr to the string
>>>
>>> (gdb) x/s 0xb7ca2540
>>> 0xb7ca2540: "this is my string"
>>> (gdb)
>>
>> add this macro to your ~/.gdbinit
>>
>>
>> define ps
>> x/s *(unsigned long *)(((char *)&$arg0)+4)
>> end
>>
>> then you can do:
>>
>> (gdb) ps myString
>> 0xb7ca2540: "this is my string"
>>
>
|
Copyright © 1999-2021 by the D Language Foundation