Thread Closed

Dealing with segmentation faults

 
Share Thread Thread Tools
Jun27-06, 02:00 PM   #1
 

Dealing with segmentation faults


Hi everyone,
I'd like to know how to prompt gdb to show me where segmentation fault in an application occurs and why. Any ideas?
PhysOrg.com
PhysOrg
science news on PhysOrg.com

>> Ants and carnivorous plants conspire for mutualistic feeding
>> Forecast for Titan: Wild weather could be ahead
>> Researchers stitch defects into the world's thinnest semiconductor
Jun27-06, 02:25 PM   #2
 
Recognitions:
Gold Membership Gold Member
Science Advisor Science Advisor
Retired Staff Staff Emeritus
Segfaults happen when your program tries to write to memory that doesn't belong to it. Common causes are:

1) Using uninitialized pointers.
2) Using uninitialized variables for pointer arithmentic (array indexing).
3) Letting a counter go beyond the boundaries of an array.

You should be able to use gdb to step through your code until you find the offending line.

- Warren
Jun27-06, 02:35 PM   #3
 
Yepp, that's what wikipedia says. However do you have any ideas how to find specific line or lines that cause segmentation fault in an application. I tried gdb for "normal" aps, and everything works perfectly, but I can't debug any applications with segmentation faults.

For example:
adrian@ubuntu:~/files/asm$ gdb env_show --quiet
(no debugging symbols found)
Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
(gdb) r
Starting program: /home/adrian/files/asm/env_show

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
You can't do that without a process to debug.
(gdb) info registers
The program has no registers now.
(gdb) bt
No stack.
(gdb)

and so on, I'm not very experienced with gdb,
--Thanks,
Jun27-06, 02:40 PM   #4
 
Recognitions:
Gold Membership Gold Member
Science Advisor Science Advisor
Retired Staff Staff Emeritus

Dealing with segmentation faults


Rather than just running your program, put a breakpoint in and step through it line by line.

- Warren
Jun27-06, 02:43 PM   #5
 
Recognitions:
Gold Membership Gold Member
Science Advisor Science Advisor
Retired Staff Staff Emeritus
Also, I presume that you compiled your program with gcc -g to include debugging information in the executable.

- Warren
Jun28-06, 06:55 AM   #6
 
Or run gdb on the core dump. Never done it myself, but the core file should have the program state at the time of the segfault.
Thread Closed
Thread Tools


Similar Threads for: Dealing with segmentation faults
Thread Forum Replies
Networking -Message Segmentation" Engineering, Comp Sci, & Technology Homework 2
Dealing with Anomalies Advanced Physics Homework 0
[yahoo] Apple admits to iPod Nano faults Computing & Technology 0
Ground plane segmentation by Nick Pears General Math 0
Segmentation Fault !!! Computing & Technology 5