私がやろうとしているのは、プロセスをフォークし、子プロセスで新しい実行可能ファイルを実行し、親プロセスを終了させ、この子プロセスをデバッグするためにGDBによって子プロセスにアタッチさせます。私が最初の親プロセスを使って子プロセス(デバッグ可能)をフォークする理由は、この子プロセスのいくつかの環境プロパティを設定したいのです。これはLinuxカーネルへのシステムコールを必要とし、そうするためにGDBを変更したくありません。私は、親プロセスが終了した後にGDBを通して子プロセスにアタッチできることを試みましたが、その場合、exec()システムコールの後で子プロセスがすでに実行されています。 問題は、子にptrace(PTRACE_TRACEME)を使用できないため、最初の命令で停止する原因になります。その場合、GDBはその親によってすでにトレースされているため、GDBにアタッチできないからです。 子プロセスがexec()を実行したときに最初の命令で停止するように、環境を設定した後、どのようにして子プロセスを停止できますか?exec()の後に新しく実行されたプログラムの最初の命令で子プロセスを停止するにはどうしたらいいですか?
0
A
答えて
0
私は自分の必要性を満たしている方法を見つけました。他人に役立つように投稿しています。フォーク後、必要な環境を設定し、デバッグ対象のプログラムを実行する直前に{kill(getpid()、SIGSTOP)}に停止信号を送ります。親が子プロセスを待つことなく、終了させる。そのため、pidは1つだけです。オープンGDBは "gdb -p pid"を使ってそれに接続します。停止信号はGDBに送られます。 GDBプロンプトでコマンドsig 0を与えてプロセスを続行します。子プロセスは続行し、次にデバッグ可能なプログラムを実行すると、今すぐ通常どおりデバッグすることができます。
関連する問題
- 1. 最初に実行した後のループスルーセットの停止 - Python
- 2. ロード命令の後にパイプラインが停止するが、追加命令の後にパイプラインが停止する
- 3. 「これは子プロセスです」という印刷後に実行が停止する理由は何ですか?
- 4. 5分ごとにcronjobを実行しますが、最初の実行後に停止しましたか?
- 5. キーボード入力でwhileループの実行を停止するにはどうしたらいいですか?
- 6. Hazelcast - 最初の実行後にexecuteOnEntriesを停止する
- 7. 新しいアクティビティをクリックしたときに音楽を停止し、最初からやり直すにはどうすればいいですか?
- 8. 最初に一致しない行の後でgrepを停止する
- 9. 親がアンマウントされた後に子更新を停止する
- 10. 私の最初のRubyアプリケーションをサーバで実行するにはどうしたらいいですか?
- 11. 最後のexpect命令は実行されません
- 12. Pythonで最もよく命令された辞書実装は何ですか?
- 13. PyUnit:最初に失敗したテストの後で停止しますか?
- 14. node.jsプログラムの子プロセスとしてnode.jsモジュールを実行するにはどうすればよいですか?
- 15. プロセスが実行されたが、プロセス中にファイルが削除された場合、エラーをどのように停止するのですか?
- 16. スレッドを停止するにはどうしたらいいですか?
- 17. タイマーを停止するにはどうしたらいいですか?
- 18. ビジュアルスタジオのプログラムの最初の命令でブレークする方法
- 19. 最初の行が一致した後にRegexが停止する
- 20. MVCでOAuthを実装 - Response.Redirectの後に実行を停止したい
- 21. 一度実行した後、ifループをどのように停止させるのですか?
- 22. 新しいタブで開くのではなく、エコーポップアップを行うにはどうしたらいいですか?
- 23. プログラムは実行されず、理由なしで停止する
- 24. スタートアップRDPプログラムとして実行すると、初期フォームの最大化を停止するにはどうすればよいですか?
- 25. 最後のオブザーバーが退会したときにイベントの公開を停止するRx observableを作成するにはどうしたらいいですか?
- 26. 関数を最後から最初に実行するにはどうすればよいですか?
- 27. Spotify docker-gc:最初の実行後に自動停止を防止する
- 28. Windowsで最後に実行されたプロセスのPID
- 29. 次のコマンドの終了後にbashから開始されたバックグラウンドプロセスを停止するにはどうしたらいいですか?
- 30. VSCodeのデバッグモードは常に最初の行で停止します