デバッガセッションで、デバッガがブレークポイントを設定したい場合、デバッガは命令をint3で置き換えます。ターゲットプロセスがこの命令に到達すると、プロセスは停止する。私は、この時点で信号が送信されていることを読んでいます。しかし、私はこの信号を捕まえることができませんでした(私はテストのために私自身のミニデバッガを書きました)。誰がこの信号を送るのですか?カーネル?そして受信者は誰ですか? 私はptrace_contの後にwait()関数を置く必要がありました。プロセスがブレークポイントに到達したことをデバッガに通知するために信号を捕まえるこの待機関数だと思いますか?中断3の場合にSIGTRAPを送信し、誰が嫌うか?
1
A
答えて
1
ターゲットプロセスがこの命令に到達すると、プロセスは停止します。
これはあまり正確ではありません。トラップ命令(0xCC
on x86)が実行されると、プロセッサはOSに通知します。 UNIXの場合、OSは誰かによってプロセスがptrace
であるかどうかをチェックします。
いいえの場合、SIGTRAP
シグナルがアプリケーションに配信されます。通常、プロセスが強制終了されますが、アプリケーションで信号を捕捉して処理することができます。
がptrace
(通常はデバッガ)の場合、信号はアプリケーションには配信されません。代わりに、デバッガのwait
がブロックされ、デバッガに下位オブジェクトの状態が変更されたことが通知されます。デバッガは、下位プロセスがどこで停止したかを調べ、ブレークポイントのためにそのようになったことを発見し、状況を適切に処理します(下位コンポーネントを調べてみましょう。または、ブレークポイントが条件付きで、等)
関連する問題
- 1. "k.send:hello" - kが "受信者"の場合、誰が送信者ですか?
- 2. Python:uart経由のチャンクの送信中断
- 3. チェックボックスがオンの場合に送信
- 4. socket.close()はデータ送信を中断しますか?
- 5. "if-statement"が失敗した場合のテストを中断する
- 6. 待機中のスレッドがなく、条件信号が送信された場合はどうなりますか?
- 7. エラー/例外が発生した場合の中断の問題?
- 8. あまりにも多くのメッセージを送信した場合、テレグラムグループのメンバーを中断するにはどうしたらいいですか?
- 9. 変数whileループが空の場合PHPを中断する
- 10. Tomcat:HTTPマルチパートリクエストが中断された場合はどうなりますか?
- 11. MQTTで1つのクライアントが切断された場合、サブスクライバ・クライアントに切断メッセージを送信するにはどうすればよいですか?
- 12. ファイルサイズがContent-Lengthを超えた場合、libcurlはダウンロードを中断しますか?
- 13. インターネットを切断して実行中にウェブクライアントの要求がハングアップする場合
- 14. 中断シグナルがDockerコンテナに送信される原因は何ですか?
- 15. 新しいコメントがある場合に電子メールを送信
- 16. 新しいコメントがある場合にメールを送信する
- 17. "q"が入力されてもSpyderがインデントエラーを表示した場合、入力を中断したい場合
- 18. Chromeウェブドライブの送信キーが「3」を送信しない
- 19. メッセージを送信中にAndroid Studioでループを中断する方法
- 20. チェックボックスがオンの場合、ブロードキャスト受信者に値を送信します
- 21. iMacroに値が存在する場合、どのように中断しますか?
- 22. サイトがIISサブフォルダにある場合MVC2カスタムルーティングが中断します
- 23. サーバー送信イベントがクライアント切断を検出しましたか?
- 24. WMP EventDispatcher:誰がイベントを送信したかを知る方法?
- 25. /Elseステートメントが別のメールを送信しない場合
- 26. 名前フィールドが空の場合はフォームを送信しない
- 27. PHPチェックボックスがオンの場合にのみフォームを送信
- 28. ソケットを開く場合にスレッドを中断する方法は?
- 29. CプログラムはシグナルSIGTRAPを受信し、すべての3回目の試行でうまく動作します。
- 30. 2つのフォームがある場合にフォームを送信する