PDA

View Full Version : how to get the instruction that provoked error



chuchi
June 3rd, 2012, 06:23 PM
Hi all!! I am developing an application in GTK, and get in trouble when I have an error. I am using gdb to debug with core dumped enabled.

Sometimes, when I get an error when programming in C , and type in the command line “gdb myprogram core”, I get a trace and the instruction that provoked the exception, but others times I am not able.

How can I know which instruction provoked the exception??

This is an example trace:


*** glibc detected *** ./f_l: free(): invalid pointer: 0xb5b070c0 *** ======= Backtrace: ========= /lib/i386-linux-gnu/libc.so.6(+0x73e42)[0xb6f94e42] /lib/i386-linux-gnu/libc.so.6(fclose+0x154)[0xb6f84384] ./f_l[0x804d5f3] ./f_l[0x804d295] /lib/i386-linux-gnu/libpthread.so.0(+0x6d4c)[0xb70ccd4c] /lib/i386-linux-gnu/libc.so.6(clone+0x5e)[0xb700bace] ======= Memory map: ======== 08048000-08053000 r-xp 00000000 08:03 2108304 /home/jesus/programs/f_l/f_l/GTK/f_l 08053000-08054000 r--p 0000a000 08:03 2108304 /home/jesus/programs/f_l/f_l/GTK/f_l 08054000-08055000 rw-p 0000b000 08:03 2108304 /home/jesus/programs/f_l/f_l/GTK/f_l 08e65000-08fc1000 rw-p 00000000 00:00 0 [heap] b3056000-b3072000 r-xp 00000000 08:03 1311668 /lib/i386-linux-gnu/libgcc_s.so.1 b3072000-b3073000 r--p 0001b000 08:03 1311668 /lib/i386-linux-gnu/libgcc_s.so.1 b3073000-b3074000 rw-p 0001c000 08:03 1311668 /lib/i386-linux-gnu/libgcc_s.so.1 b3074000-b3075000 ---p 00000000 00:00 0 b3075000-b3875000 rw-p 00000000 00:00 0 b3875000-b38b9000 r-xp 00000000 08:03 136118 /usr/lib/i386-linux-gnu/libibus-1.0.so.0.401.0 b38b9000-b38ba000 r--p 00043000 08:03 136118 /usr/lib/i386-linux-gnu/libibus-1.0.so.0.401.0 b38ba000-b38bb000 rw-p 00044000 08:03 136118 /usr/lib/i386-linux-gnu/libibus-1.0.so.0.401.0 b38ce000-b38cf000 ---p 00000000 00:00 0 b38cf000-b40cf000 rw-p 00000000 00:00 0 b40cf000-b40d0000 ---p 00000000 00:00 0 b40d0000-b48d0000 rw-p 00000000 00:00 0 b48d0000-b48ea000 r-xp 00000000 08:03 135936 /usr/lib/i386-linux-gnu/libdbusmenu-glib.so.4.0.12 b48ea000-b48eb000 r--p 00019000 08:03 135936 /usr/lib/i386-linux-gnu/libdbusmenu-glib.so.4.0.12 b48eb000-b48ec000 rw-p 0001a000 08:03 135936 /usr/lib/i386-linux-gnu/libdbusmenu-glib.so.4.0.12 b48ec000-b48fd000 r-xp 00000000 08:03 135938 /usr/lib/i386-linux-gnu/libdbusmenu-gtk.so.4.0.12 b48fd000-b48fe000 r--p 00010000 08:03 135938 /usr/lib/i386-linux-gnu/libdbusmenu-gtk.so.4.0.12 b48fe000-b48ff000 rw-p 00011000 08:03 135938 /usr/lib/i386-linux-gnu/libdbusmenu-gtk.so.4.0.12 b48ff000-b4900000 ---p 00000000 00:00 0 b4900000-b5100000 rw-p 00000000 00:00 0 b5100000-b5121000 rw-p 00000000 00:00 0 b5121000-b5200000 ---p 00000000 00:00 0 b5210000-b5216000 r-xp 00000000 08:03 136882 /usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/immodules/im-ibus.so b5216000-b5217000 r--p 00005000 08:03 136882 /usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/immodules/im-ibus.so b5217000-b5218000 rw-p 00006000 08:03 136882 /usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/immodules/im-ibus.so b5218000-b521a000 rw-p 00000000 00:00 0 b521a000-b5221000 r--s 00000000 08:03 136706 /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache b5221000-b5226000 r-xp 00000000 08:03 135651 /usr/lib/gtk-2.0/2.10.0/menuproxies/libappmenu.so b5226000-b5227000 r--p 00004000 08:03 135651 /usr/lib/gtk-2.0/2.10.0/menuproxies/libappmenu.so b5227000-b5228000 rw-p 00005000 08:03 135651 /usr/lib/gtk-2.0/2.10.0/menuproxies/libappmenu.so b5228000-b527a000 r--p 00000000 08:03 788592 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf b527a000-b52d1000 r--p 00000000 08:03 788621 /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf b52d1000-b52d3000 r-xp 00000000 08:03 137085 /usr/lib/i386-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so b52d3000-b52d4000 r--p 00001000 08:03 137085 /usr/lib/i386-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so b52d4000-b52d5000 rw-p 00002000 08:03 137085 /usr/lib/i386-linux-gnu/pango/1.6.0/modules/pango-basic-fc.so b52d5000-b52d6000 r--s 00000000 08:03 1574417 /var/cache/fontconfig/c05880de57d1f5e948fdfacc138775d9-le32d4.cache-3 b52d6000-b52dc000 r--s 00000000 08:03 1574412 /var/cache/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le32d4.cache-3 b52dc000-b52de000 r--s 00000000 08:03 1574413 /var/cache/fontconfig/99e8ed0e538f840c565b6ed5dad60d56-le32d4.cache-3 b52de000-b52e1000 r--s 00000000 08:03 1574399 /var/cache/fontconfig/2cd17615ca594fa2959ae173292e504c-le32d4.cache-3 b52e1000-b52e2000 r--s 00000000 08:03 1574424 /var/cache/fontconfig/e7071f4a29fa870f4323321c154eba04-le32d4.cache-3 b52e2000-b52e3000 r--s 00000000 08:03 1574397 /var/cache/fontconfig/0d8c3b2ac0904cb8a57a757ad11a4a08-le32d4.cache-3 b52e3000-b52e7000 r--s 00000000 08:03 1574414 /var/cache/fontconfig/a755afe4a08bf5b97852ceb7400b47bc-le32d4.cache-3 b52e7000-b52ee000 r--s 00000000 08:03 1584312 /var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-le32d4.cache-3 b52ee000-b52f9000 r--s 00000000 08:03 1574396 /var/cache/fontconfig/04aabc0a78ac019cf9454389977116d2-le32d4.cache-3 b52f9000-b52fc000 r--s 00000000 08:03 1574402 /var/cache/fontconfig/385c0604a188198f04d133e54aba7fe7-le32d4.cache-3 b52fc000-b52ff000 r--s 00000000 08:03 1574411 /var/cache/fontconfig/8801497958630a81b71ace7c5f9b32a8-le32d4.cache-3 b52ff000-b5300000 ---p 00000000 00:00 0 b5300000-b5b00000 rw-p 00000000 00:00 0 b5b00000-b5b21000 rw-p 00000000 00:00 0 b5b21000-b5c00000 ---p 00000000 00:00 0 b5c00000-b5c04000 r--s 00000000 08:03 1574400 /var/cache/fontconfig/3047814df9a2f067bd2d96a2b9c36e5a-le32d4.cache-3 b5c04000-b5c05000 r--s 00000000 08:03 1574405 /var/cache/fontconfig/56cf4f4769d0f4abc89a4895d7bd3ae1-le32d4.cache-3 b5c05000-b5c06000 r--s 00000000 08:03 1574416 /var/cache/fontconfig/b9d506c9ac06c20b433354fa67a72993-le32d4.cache-3 b5c06000-b5c0a000 r--s 00000000 08:03 1574415 /var/cache/fontconfig/b47c4e1ecd0709278f4910c18777a504-le32d4.cache-3 b5c0a000-b5c10000 r-xp 00000000 08:03 136203 /usr/lib/i386-linux-gnu/libogg.so.0.7.1 b5c10000-b5c11000 r--p 00005000 08:03 136203 /usr/lib/i386-linux-gnu/libogg.so.0.7.1 b5c11000-b5c12000 rw-p 00006000 08:03 136203 /usr/lib/i386-linux-gnu/libogg.so.0.7.1 b5c12000-b5c3b000 r-xp 00000000 08:03 136361 /usr/lib/i386-linux-gnu/libvorbis.so.0.4.5 b5c3b000-b5c3c000 r--p 00028000 08:03 136361 /usr/lib/i386-linux-gnu/libvorbis.so.0.4.5 b5c3c000-b5c3d000 rw-p 00029000 08:03 136361 /usr/lib/i386-linux-gnu/libvorbis.so.0.4.5 b5c3d000-b5c45000 r-xp 00000000 08:03 136160 /usr/lib/i386-linux-gnu/libltdl.so.7.3.0 b5c45000-b5c46000 r--p 00008000 08:03 136160 /usr/lib/i386-linux-gnu/libltdl.so.7.3.0 b5c46000-b5c47000 rw-p 00009000 08:03 136160 /usr/lib/i386-linux-gnu/libltdl.so.7.3.0 b5c47000-b5c58000 r-xp 00000000 08:03 136328 /usr/lib/i386-linux-gnu/libtdb.so.1.2.9 b5c58000-b5c59000 r--p 00010000 08:03 136328 /usr/lib/i386-linux-gnu/libtdb.so.1.2.9Aborted (core dumped)



I use in my make file the -gstabs tag to compile source code.


Thank you very very much!!

MadCow108
June 3rd, 2012, 06:41 PM
valgrind is most likely to give you the best diagnostic for this type of error (memory corruption, often due to buffer overflow).