September 21, 2004 Help debuggin | ||||
---|---|---|---|---|
| ||||
On a gdb session I see a call to a method that is not what I wrote! Is that a bug on dmd, on the linker or on gdb? the assert(0); on the function that should have been called is not 'fired' - obviously. The code that gdb executes with nexti and setpi doesn't correspond to what I wrote in D. There is not doubt about that. gdb calls a different function. when executing normally I get printfs that are coded after the assert(0); the method that should have been called returns an object. the var before calling the method contains 0x0, and after NOT CALLING the method contains 0x1. (so var===null == 0) linux, dmd 0.101 Ant here is the actual D code: case "Image": printf("TestDrawing.drawPrimitive 1\n" ); printf("TestDrawing.drawPrimitive image = 0x%X\n" , image); printf("TestDrawing.drawPrimitive 2\n" ); Pixbuf p; printf("TestDrawing.drawPrimitive 2 0x%X\n", p ); p = image.getPixbuf()trimTo(height , width); printf("TestDrawing.drawPrimitive 2 0x%X\n", p ); printf("TestDrawing.drawPrimitive 2 %d\n", (p===null)); Pixbuf pixbuf = p.trimTo(height , width); printf("TestDrawing.drawPrimitive 3\n" ); Image i = new Image(pixbuf); printf("TestDrawing.drawPrimitive 4\n" ); d.drawImage(i, x, y); printf("TestDrawing.drawPrimitive 5\n" ); // d.drawImage(image, x, y); break; and the method that should have been called but never is: Pixbuf getPixbuf() { assert(0); printf("Image.getPixbuf entry\n" ); GdkPixbuf* gPix = gtk_image_get_pixbuf(cast(GtkImage*)gtkW()); printf("Image.getPixbuf gPix = 0x%X\n", gPix); Pixbuf pix = new Pixbuf(gPix); printf("Image.getPixbuf pix = 0x%X\n", pix); return pix; //return new Pixbuf(gtk_image_get_pixbuf(cast(GtkImage*)gtkW())); } ############## output TestDrawing.drawPrimitive 1 TestDrawing.drawPrimitive image = 0x40994A00 TestDrawing.drawPrimitive 2 TestDrawing.drawPrimitive 2 0x0 TestDrawing.drawPrimitive 2 0x1 TestDrawing.drawPrimitive 2 0 Segmentation fault |
September 21, 2004 Re: Help debuggin | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ant | On Mon, 20 Sep 2004 23:34:53 -0400, Ant wrote:
> On a gdb session I see a call to a method that is not
> what I wrote!
>
> Is that a bug on dmd, on the linker or on gdb?
>
> the assert(0); on the function that should have been
> called is not 'fired'
eventualy, if I don't use the part of the program that
segfauls the assert(0) does get fired.
Ant
|
Copyright © 1999-2021 by the D Language Foundation