469,573 Members | 1,222 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,573 developers. It's quick & easy.

Debugging core file?

I compiled a game client and it crashed (segmentation fault) resulting
in a core file being generated. I'm trying to find out exactly what
caused it to crash. Any ideas how I can do this with gdb? In the
Makefile can I just add a "-g" flag to have the binary produced with
debugging symbols? The source is written in ANSI C.

This is what I have now:
"CC = gcc"

The client binary is 433680 and the core file produced when it crashed
is almost double that, it's 860160.

Here is what I've done so far:
1]+ Segmentation fault (core dumped) ./netrek

zu22@netrek:~/netrek/cow/build$ file core
core: ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-
style

zu22@netrek:~/netrek/cow/build$ gdb ./netrek core
GNU gdb 6.6.90.20070912-debian
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/
gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show
copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /usr/lib/libmp.so.3...done.
Loaded symbols for /usr/lib/libmp.so.3
Reading symbols from /usr/lib/libgmp.so.3...done.
Loaded symbols for /usr/lib/libgmp.so.3
Reading symbols from /usr/lib/libXpm.so.4...done.
Loaded symbols for /usr/lib/libXpm.so.4
Reading symbols from /usr/lib/libX11.so.6...done.
Loaded symbols for /usr/lib/libX11.so.6
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libm.so.6...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /usr/lib/libXau.so.6...done.
Loaded symbols for /usr/lib/libXau.so.6
Reading symbols from /usr/lib/libXdmcp.so.6...done.
Loaded symbols for /usr/lib/libXdmcp.so.6
Reading symbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
Reading symbols from /lib/libnss_mdns4_minimal.so.2...done.
Loaded symbols for /lib/libnss_mdns4_minimal.so.2
Reading symbols from /lib/libnss_dns.so.2...done.
Loaded symbols for /lib/libnss_dns.so.2
Reading symbols from /lib/libresolv.so.2...done.
Loaded symbols for /lib/libresolv.so.2
Reading symbols from /usr/lib/libXcursor.so.1...done.
Loaded symbols for /usr/lib/libXcursor.so.1
Reading symbols from /usr/lib/libXrender.so.1...done.
Loaded symbols for /usr/lib/libXrender.so.1
Reading symbols from /usr/lib/libXfixes.so.3...done.
Loaded symbols for /usr/lib/libXfixes.so.3
Reading symbols from /lib/libnss_compat.so.2...done.
Loaded symbols for /lib/libnss_compat.so.2
Reading symbols from /lib/libnss_nis.so.2...done.
Loaded symbols for /lib/libnss_nis.so.2
Core was generated by `./netrek'.
Program terminated with signal 11, Segmentation fault.
#0 0x0805cc99 in map ()
(gdb) run
Starting program: /home/zu22/netrek/cow/build/netrek
Failed to read a valid object file image from memory.
Reading defaults file /home/zu22/.netrekrc

Program exited normally.
(gdb) bt
#0 0x0805cc99 in map ()
#1 0x08083757 in redraw ()
#2 0x080838bc in intrupt ()
#3 0x08051d08 in input ()
#4 0x08082289 in cowmain ()
#5 0x0804b787 in main ()
(gdb) quit

I used cscope to check map() and it's a pretty big function with
different uses depending on the context so I'm still not sure exactly
why the client is crashing.

Zach

Nov 3 '07 #1
2 3160
On Nov 4, 3:24 am, Zach <net...@gmail.comwrote:
I compiled a game client and it crashed (segmentation fault) resulting
in a core file being generated. I'm trying to find out exactly what
caused it to crash. Any ideas how I can do this with gdb? In the
Makefile can I just add a "-g" flag to have the binary produced with
debugging symbols? The source is written in ANSI C.

This is what I have now:
"CC = gcc"

The client binary is 433680 and the core file produced when it crashed
is almost double that, it's 860160.

Here is what I've done so far:
1]+ Segmentation fault (core dumped) ./netrek

zu22@netrek:~/netrek/cow/build$ file core
core: ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-
style

zu22@netrek:~/netrek/cow/build$ gdb ./netrek core
GNU gdb 6.6.90.20070912-debian
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/
gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show
copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /usr/lib/libmp.so.3...done.
Loaded symbols for /usr/lib/libmp.so.3
Reading symbols from /usr/lib/libgmp.so.3...done.
Loaded symbols for /usr/lib/libgmp.so.3
Reading symbols from /usr/lib/libXpm.so.4...done.
Loaded symbols for /usr/lib/libXpm.so.4
Reading symbols from /usr/lib/libX11.so.6...done.
Loaded symbols for /usr/lib/libX11.so.6
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libm.so.6...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /usr/lib/libXau.so.6...done.
Loaded symbols for /usr/lib/libXau.so.6
Reading symbols from /usr/lib/libXdmcp.so.6...done.
Loaded symbols for /usr/lib/libXdmcp.so.6
Reading symbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
Reading symbols from /lib/libnss_mdns4_minimal.so.2...done.
Loaded symbols for /lib/libnss_mdns4_minimal.so.2
Reading symbols from /lib/libnss_dns.so.2...done.
Loaded symbols for /lib/libnss_dns.so.2
Reading symbols from /lib/libresolv.so.2...done.
Loaded symbols for /lib/libresolv.so.2
Reading symbols from /usr/lib/libXcursor.so.1...done.
Loaded symbols for /usr/lib/libXcursor.so.1
Reading symbols from /usr/lib/libXrender.so.1...done.
Loaded symbols for /usr/lib/libXrender.so.1
Reading symbols from /usr/lib/libXfixes.so.3...done.
Loaded symbols for /usr/lib/libXfixes.so.3
Reading symbols from /lib/libnss_compat.so.2...done.
Loaded symbols for /lib/libnss_compat.so.2
Reading symbols from /lib/libnss_nis.so.2...done.
Loaded symbols for /lib/libnss_nis.so.2
Core was generated by `./netrek'.
Program terminated with signal 11, Segmentation fault.
#0 0x0805cc99 in map ()
(gdb) run
Starting program: /home/zu22/netrek/cow/build/netrek
Failed to read a valid object file image from memory.
Reading defaults file /home/zu22/.netrekrc

Program exited normally.
(gdb) bt
#0 0x0805cc99 in map ()
#1 0x08083757 in redraw ()
#2 0x080838bc in intrupt ()
#3 0x08051d08 in input ()
#4 0x08082289 in cowmain ()
#5 0x0804b787 in main ()
(gdb) quit

I used cscope to check map() and it's a pretty big function with
different uses depending on the context so I'm still not sure exactly
why the client is crashing.
1)Can you try step debugging and analyse variables/memory w.r.t
reaching till 'map' and inside map .

You have tried backtrace which shows a(one) line per frame, for many
frames, starting with the currently executing frame (frame zero),
followed by its caller (frame one), and on up the stack.
But, we are not aware of your design flow. Is the design flow correct
as you have thought ?

Signal 11 - "segmentation fault" and as you might be aware that the
reason for this can be due to
accessing a memory location that was not assigned. So, Check for the
proper use of memory (Memory/Buffer management,proper use of
pointers,typecasting,string manipulation as APIs related
with it does not have proper buffer overflow / buffer management
checks)

Karthik Balaguru

Nov 4 '07 #2
On Nov 4, 3:51 pm, karthikbalaguru <karthikbalagur...@gmail.com>
wrote:
On Nov 4, 3:24 am, Zach <net...@gmail.comwrote:
I compiled a game client and it crashed (segmentation fault) resulting
in a core file being generated. I'm trying to find out exactly what
caused it to crash. Any ideas how I can do this with gdb? In the
Makefile can I just add a "-g" flag to have the binary produced with
debugging symbols? The source is written in ANSI C.
This is what I have now:
"CC = gcc"
The client binary is 433680 and the core file produced when it crashed
is almost double that, it's 860160.
Here is what I've done so far:
1]+ Segmentation fault (core dumped) ./netrek
zu22@netrek:~/netrek/cow/build$ file core
core: ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-
style
zu22@netrek:~/netrek/cow/build$ gdb ./netrek core
GNU gdb 6.6.90.20070912-debian
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/
gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show
copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
warning: Can't read pathname for load map: Input/output error.
Reading symbols from /usr/lib/libmp.so.3...done.
Loaded symbols for /usr/lib/libmp.so.3
Reading symbols from /usr/lib/libgmp.so.3...done.
Loaded symbols for /usr/lib/libgmp.so.3
Reading symbols from /usr/lib/libXpm.so.4...done.
Loaded symbols for /usr/lib/libXpm.so.4
Reading symbols from /usr/lib/libX11.so.6...done.
Loaded symbols for /usr/lib/libX11.so.6
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libm.so.6...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /usr/lib/libXau.so.6...done.
Loaded symbols for /usr/lib/libXau.so.6
Reading symbols from /usr/lib/libXdmcp.so.6...done.
Loaded symbols for /usr/lib/libXdmcp.so.6
Reading symbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
Reading symbols from /lib/libnss_mdns4_minimal.so.2...done.
Loaded symbols for /lib/libnss_mdns4_minimal.so.2
Reading symbols from /lib/libnss_dns.so.2...done.
Loaded symbols for /lib/libnss_dns.so.2
Reading symbols from /lib/libresolv.so.2...done.
Loaded symbols for /lib/libresolv.so.2
Reading symbols from /usr/lib/libXcursor.so.1...done.
Loaded symbols for /usr/lib/libXcursor.so.1
Reading symbols from /usr/lib/libXrender.so.1...done.
Loaded symbols for /usr/lib/libXrender.so.1
Reading symbols from /usr/lib/libXfixes.so.3...done.
Loaded symbols for /usr/lib/libXfixes.so.3
Reading symbols from /lib/libnss_compat.so.2...done.
Loaded symbols for /lib/libnss_compat.so.2
Reading symbols from /lib/libnss_nis.so.2...done.
Loaded symbols for /lib/libnss_nis.so.2
Core was generated by `./netrek'.
Program terminated with signal 11, Segmentation fault.
#0 0x0805cc99 in map ()
(gdb) run
Starting program: /home/zu22/netrek/cow/build/netrek
Failed to read a valid object file image from memory.
Reading defaults file /home/zu22/.netrekrc
Program exited normally.
(gdb) bt
#0 0x0805cc99 in map ()
#1 0x08083757 in redraw ()
#2 0x080838bc in intrupt ()
#3 0x08051d08 in input ()
#4 0x08082289 in cowmain ()
#5 0x0804b787 in main ()
(gdb) quit
I used cscope to check map() and it's a pretty big function with
different uses depending on the context so I'm still not sure exactly
why the client is crashing.

1)Can you try step debugging and analyse variables/memory w.r.t
reaching till 'map' and inside map .

You have tried backtrace which shows a(one) line per frame, for many
frames, starting with the currently executing frame (frame zero),
followed by its caller (frame one), and on up the stack.
But, we are not aware of your design flow. Is the design flow correct
as you have thought ?

Signal 11 - "segmentation fault" and as you might be aware that the
reason for this can be due to
accessing a memory location that was not assigned. So, Check for the
proper use of memory (Memory/Buffer management,proper use of
pointers,typecasting,string manipulation as APIs related
with it does not have proper buffer overflow / buffer management
checks)

Karthik Balaguru

>From the stack it seems that the -g flag didn't work. the stack looks
like a stack of non debug binary. Once you create the binary with
debugging symbols...you will see the line numbers.

Nov 4 '07 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

reply views Thread by Job Kelderman | last post: by
2 posts views Thread by hpoliset | last post: by
83 posts views Thread by achintmehta | last post: by
10 posts views Thread by Doug Robertson | last post: by
4 posts views Thread by George Sakkis | last post: by
1 post views Thread by sunil | last post: by
4 posts views Thread by yossi.kreinin | last post: by
reply views Thread by stimpy_cm | last post: by
reply views Thread by suresh191 | last post: by
4 posts views Thread by guiromero | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.