GNU/Linux >> Linux の 問題 >  >> Linux

Linux でデバッガーはどのように機能しますか?

ptrace という名前のシステム コールがあります。操作、ターゲット プロセスの PID、ターゲット プロセス メモリ内のアドレス、およびデータ ポインタの 4 つのパラメータが必要です。最後の 2 つのパラメーターの使用方法は、操作によって異なります。

たとえば、デバッガーをプロセスにアタッチ/デタッチできます:

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

シングルステップ実行:

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);

PTRACE_PEEKDATA と PTRACE_POKEDATA を使用して、ターゲット プロセスのメモリを読み書きすることもできます。実際の例を見たい場合は、gdb をチェックしてください。


Linux
  1. スティッキービットはどのように機能しますか?

  2. Linux – Linuxで名前空間を一覧表示する方法は?

  3. 「ls」コマンドは Linux/Unix でどのように機能しますか?

  1. Linux カーネルの copy_from_user は内部でどのように機能しますか?

  2. Linux でスタック割り当てはどのように機能しますか?

  3. ps コマンドはどのように機能しますか?

  1. NGINXとは何ですか?それはどのように機能しますか?

  2. Awkの「!a [$ 0] ++」はどのように機能しますか?

  3. ループバック インターフェイスはどのように機能しますか