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
--
[email protected] mailing list