GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara kerja debugger di Linux?

Ada panggilan sistem bernama ptrace. Dibutuhkan 4 parameter:operasi, PID dari proses target, alamat di memori proses target, dan penunjuk data. Cara 2 parameter terakhir digunakan bergantung pada operasi.

Misalnya Anda dapat melampirkan/melepaskan debugger Anda ke suatu proses:

ptrace(PTRACE_ATTACH, pid, 0, 0);
...
ptrace(PTRACE_DETACH, pid, 0, 0);

Eksekusi satu langkah:

ptrace(PTRACE_ATTACH, pid, 0, 0);
int status;
waitpid(pid, &status, WSTOPPED);
while (...) {
    ptrace(PTRACE_SINGLESTEP, pid, 0, 0);
    // give the user a chance to do something
}
ptrace(PTRACE_DETACH, pid, 0, 0);

Anda juga dapat membaca/menulis memori proses target dengan PTRACE_PEEKDATA dan PTRACE_POKEDATA. Jika Anda ingin melihat contoh nyata, periksa gdb.


Linux
  1. Apa itu NGINX? Bagaimana cara kerjanya?

  2. Bagaimana Cara Kerja Awk ‘!a[$0]++’?

  3. Bagaimana Cara Kerja Sticky Bit?

  1. Bagaimana sebenarnya sig_atomic_t bekerja?

  2. ZFS di Linux, apakah itu berfungsi?

  3. Bagaimana cara kerja alokasi tumpukan di Linux?

  1. Linux – Bagaimana Load Average Bekerja Dengan CPU Modern?

  2. Linux – Bagaimana Cara Mendaftar Namespace Di Linux?

  3. Bagaimana cara kerja antarmuka loopback