Frage

Verwenden von Strace in einem Programm: Strace gibt den gleichen Extraktausgang in Debian und CentOS aus, mit Ausnahme von set_thread_area. (Die Version des Programms ist genau gleich unter Linuxes.)

Warum sind sie unterschiedlich? Gibt es eine Möglichkeit, dass die Ausgabe auf beiden Linuxen gleich ist? Kann dieser Unterschied in C programmiert werden? Fehlt ein Paket in Debian/Centos?

set_thread_area({entry_number:-1 -> 6, base_addr:0xb7fb16c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
open("/dev/urandom", O_RDONLY)          = 3
read(3, "\242\177)", 3)                 = 3
set_thread_area(0xff9db33c)             = 0

BEARBEITEN
Erstens: CentOS i686
Zweitens: Debian x64, aber mit -m32 zusammengestellt

War es hilfreich?

Lösung

Fragen Sie nach dem Grund, warum die Adressen unterschiedlich sind oder warum strace formatiert die Ausgabe anders? Wenn es das letztere ist, habe ich vermute, dass Sie nur mit zwei verschiedenen Versionen zu tun haben strace, ein möglicherweise veraltet. Darüber sieht jedoch auch etwas seltsam aus:

set_thread_area(0xff9db33c)             = 0

Die Adresse 0xff9db33c ist definitiv keine gültige Benutzerspace -Adresse auf i386. Ist es möglich, dass eines Ihrer Systeme x86_64 ist? Das würde auch das unterschiedliche Format erklären, da set_thread_area auf i386 nimmt einen Zeiger auf a struct ldt_desc, Auf x86_64 nimmt es nur den tatsächlichen Zeigerwert zum Laden in das Thread -Register.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top