私がやろうとしているのは、プロセスをフォークし、子プロセスで新しい実行可能ファイルを実行し、親プロセスを終了させ、この子プロセスをデバッグするために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. symfonyのカスタマイズされたコマンドは、最初の実行後に停止します
- 2. 最初に実行した後のループスルーセットの停止 - Python
- 3. ロード命令の後にパイプラインが停止するが、追加命令の後にパイプラインが停止する
- 4. 「これは子プロセスです」という印刷後に実行が停止する理由は何ですか?
- 5. 5分ごとにcronjobを実行しますが、最初の実行後に停止しましたか?
- 6. Railsの実行をイニシャライザから停止するにはどうしたらいいですか?
- 7. キーボード入力でwhileループの実行を停止するにはどうしたらいいですか?
- 8. tcl tkcon GUIで関数の実行を停止するにはどうしたらいいですか?
- 9. カーネルモジュールでスケジュールされたプロセスの命令にアクセスする
- 10. 一時停止/一時停止後に一時停止したシーン(停止していない状態)でSKActionを実行しないようにするには、一時停止/一時停止後にノードのテクスチャは変更されません。
- 11. Hazelcast - 最初の実行後にexecuteOnEntriesを停止する
- 12. 新しいアクティビティをクリックしたときに音楽を停止し、最初からやり直すにはどうすればいいですか?
- 13. 最初に一致しない行の後でgrepを停止する
- 14. 親がアンマウントされた後に子更新を停止する
- 15. このプログラムを入力した後に最初から再実行するにはどうすればいいですか?
- 16. 私の最初のRubyアプリケーションをサーバで実行するにはどうしたらいいですか?
- 17. さらに移動した後に最初のアクティビティに戻るにはどうすればよいですか?
- 18. これらの命令の実行後にespの値は何ですか?
- 19. 最後のexpect命令は実行されません
- 20. Pythonで最もよく命令された辞書実装は何ですか?
- 21. このコードを実行した後にどのくらいのプロセスがビルドされますか?
- 22. PyUnit:最初に失敗したテストの後で停止しますか?
- 23. node.jsプログラムの子プロセスとしてnode.jsモジュールを実行するにはどうすればよいですか?
- 24. プロセスが実行されたが、プロセス中にファイルが削除された場合、エラーをどのように停止するのですか?
- 25. ビジュアルスタジオのプログラムの最初の命令でブレークする方法
- 26. タイマーを停止するにはどうしたらいいですか?
- 27. スレッドを停止するにはどうしたらいいですか?
- 28. cd($ pwdが変更された)後にコマンドを実行するにはどうしたらいいですか?
- 29. 新しいタブで開くのではなく、エコーポップアップを行うにはどうしたらいいですか?
- 30. 一度実行した後、ifループをどのように停止させるのですか?