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

Reply via email to