On Sun, 2005-11-27 at 15:22 +0000, Edward Catmur wrote: > On Sun, 2005-11-27 at 08:40 -0500, Ned Ludd wrote: > > On Sun, 2005-11-27 at 15:09 +0200, Ivan Yosifov wrote: > > > And one more thing. For proper debugging, don't I need the source to be > > > present ? > > > > -g3 -ggdb embeds the source code in the debug info so I don't see the > > point. > > It doesn't; at least not with gcc 3.4.4. It does embed function > prototypes and macro definitions, though. > > Ed Catmur
Eh? [EMAIL PROTECTED] ~ $ gcc -g3 -nopie -ggdb segfault_me.c -o segfault_me [EMAIL PROTECTED] ~ $ paxctl -permsx segfault_me [EMAIL PROTECTED] ~ $ gdb -q ./segfault_me Using host libthread_db library "/lib/libthread_db.so.1". (gdb) b main Breakpoint 1 at 0x804853d: file segfault_me.c, line 25. (gdb) step The program is not being run. (gdb) r Starting program: /home/solar/segfault_me Breakpoint 1, main () at segfault_me.c:25 25 foo(); (gdb) step foo () at segfault_me.c:17 17 int i = 0; (gdb) 18 for (i = 0 ; i < 3; i++) { (gdb) 19 printf("Just an example %d\n", i); (gdb) Just an example 0 18 for (i = 0 ; i < 3; i++) { (gdb) 19 printf("Just an example %d\n", i); (gdb) Just an example 1 18 for (i = 0 ; i < 3; i++) { (gdb) 19 printf("Just an example %d\n", i); (gdb) Just an example 2 18 for (i = 0 ; i < 3; i++) { (gdb) 21 bar(); (gdb) bar () at segfault_me.c:13 13 baz(); (gdb) baz () at segfault_me.c:9 9 atexit(break_self); (gdb) 10 } (gdb) bar () at segfault_me.c:14 14 } (gdb) foo () at segfault_me.c:22 22 } (gdb) main () at segfault_me.c:26 26 return 0; (gdb) 27 } (gdb) 0x400407b6 in __libc_start_main () from /lib/libc.so.6 (gdb) Single stepping until exit from function __libc_start_main, which has no line number information. Program received signal SIGSEGV, Segmentation fault. 0x40050681 in kill () from /lib/libc.so.6 (gdb) [EMAIL PROTECTED] ~ $ cat segfault_me.c #include <stdio.h> #include <signal.h> void break_self() { kill(getpid(), SIGSEGV); } int baz() { atexit(break_self); } void bar() { baz(); } void foo() { int i; for (i = 0 ; i < 3; i++) { printf("Just an example %d\n", i); } bar(); } int main() { foo(); return 0; } # While single stepping sure looks like source code to me. [EMAIL PROTECTED] ~ $ gcc -v 2>&1 | tail -n 1 gcc version 3.4.4 (Gentoo Hardened 3.4.4, HTB-3.4.4_pre-1.00, ssp-3.4.4-1.0, pie-8.7.8) -- Ned Ludd <[EMAIL PROTECTED]> Gentoo Linux -- gentoo-dev@gentoo.org mailing list