2012-04-05 7 views
1

Von Strace Handbuch:Wie finde ich die Stellen von Systemaufrufen meines Programms?

-i Print the instruction pointer at the time of the system call. 

straced ich mein Programm:

strace -i prog 

Als Ergebnis habe ich viel von Systemaufrufen bekam. Einer von ihnen:

[000da49c] open("./rabbit.o", O_RDONLY) = 3 

Aber zerlegt Unterricht an dieser Adresse prog rufen keine syscall (hte Herausgeber):

da49c ! mov   r7, ip       

Was ist falsch? Wie finde ich die Stellen von Systemaufrufen meines Programms?

P.S. Die Architektur meines Geräts unterstützt GDB-Befehl catch syscall nicht.

Antwort

2

Um den Bugs Abschnitt der „strace“ man-Seite zitieren:

The -i option is weakly supported. 

Ein weiteren Tipp, die Ihnen helfen können: Arbeiten Sie in dem vorherigen Code aussehen? Die IP-Adresse an der Stelle, an der sie ausgegeben wird, zeigt nach dem Syscall bereits auf die NEXT-Anweisung. So sollten Sie die Anweisung vor da49c überprüfen.

+0

es ist: da498! SVC 0x00000000. Es könnte syscall ich sollte es überprüfen. Danke für deine Antwort. –

+0

Es funktioniert ausgezeichnet. Danke Herr Flolo! –

Verwandte Themen