Tracing self process using ptrace()


 
Thread Tools Search this Thread
Top Forums Programming Tracing self process using ptrace()
# 1  
Old 06-02-2008
Tracing self process using ptrace()

Kindly correct me if any of the foll is wrong:

I want to trace the current process from the C program itself which I think can be done using

ptrace(PTRACE_ATTACH,getpid(),0,0);

I would like to get control back after a segmentation fault, or arithmetric exception (i.e. all signals that end in a core dump).

If I do something like this, it doesn't work :

Code:
int status;
//other code
....
....
ptrace(PTRACE_ATTACH,getpid(),0,0);
int a=99,b=0,c;
c = a/b;
wait(&status);
if(WIFSIGNALED(status)) printf("Got control after exception");

How do I do the above ? I do not want to create a child process to monitor the signals. My aim is to create a single process solution.

Thank you, in advance.

Last edited by vpraveen84; 06-02-2008 at 03:50 PM..
# 2  
Old 06-02-2008
A couple problems with this.
1. It can't be done if you service the segmentation violation
properly as a fatal error.
2.If invalid memory has been accessed and overwritten
causing the kernel to send sigsegv the program is in an
unstable state and should exit.
Further operations are no longer trustworthy as many critical
memory locations may have been altered.
Login or Register to Ask a Question

Previous Thread | Next Thread

6 More Discussions You Might Find Interesting

1. Solaris

<sys/ptrace.h> missing in Solaris 10

Does anyone know why this system include is not there. What can I install to get this and why is it missing? (4 Replies)
Discussion started by: steve701
4 Replies

2. Programming

ptrace-get register values

Hi,All, I use ptrace to capture the OPEN syscall, and find problems on getting filename as its argument. Basically, what ebx returns is a pointer to the filename of file to open. My code is as follows, and the program keep throwing segment fault. Besides, even if I can get filePath, how can I know... (2 Replies)
Discussion started by: tristartom
2 Replies

3. UNIX for Advanced & Expert Users

gdb and ptrace ????

Hi all What 's the relationship between gdb and ptrace, if the kernel does not support ptrace, can gdb work ? Is there some one can explain this for me (3 Replies)
Discussion started by: yanglei_fage
3 Replies

4. Programming

regarding ptrace equivalent in solairs

hi,'m using the 5.11 kernel version on amd64 architecture, 32-bit. i need help on the following issues 1)a proper structure to represent the register structure in the architecture 2)a function which would change the register values of the child when the control is with the parent.. ptrace_setregs... (0 Replies)
Discussion started by: sayaproj
0 Replies

5. Programming

ptrace-GETREGS

hello everybody!! I want to post a question!I am confused about the explanation of ptrace command. long ins; ins=ptrace(PTRACE_GETREGS,pid,NULL,&regs); with this command i am able to read, for instance, regs.eip context or get regs.eip address? And if i write the commad... (2 Replies)
Discussion started by: nicos
2 Replies

6. Programming

[FreeBSD] ptrace( ) - Device busy

Hello, I'm trying to obtain process memory contents using ptrace( ) on FreeBSD 4.7. I know this is neither portable nor clean, yet I'd really like to get it to work... I read the manual help page and did a google search, but couldn't find anything helpful. First, the code I'm using to read an... (5 Replies)
Discussion started by: Driver
5 Replies
Login or Register to Ask a Question