リバースエンジニアリングStackexchangeで次の質問をしました。https://reverseengineering.stackexchange.com/questions/15169/transferring-control-of-ptrace-to-another-process 私はptraceの質問がそこに最も適していると思うからです。
人が少なすぎて、Linuxに慣れていなかったからかどうかはわからなかった。とにかくここに尋ねなければならないと思いました。
プロセスAを作りたいです。 AIで2番目のプロセスBを始めたいです。 Aはシステムリソースを監視し続けたいと思います。特定の条件が満たされたら、AはBをptraceしてgdbを起動し、ptrace制御をgdbに送信したいと思います。
可能ですか?そうでない場合、AがBを一時停止し、Bが接続されているgdbを起動してからBを「一時停止」する方法はありますか?
答え1
コメントすることはできませんが、まだ噛まれていません。
最大の質問は、なぜgdbに切り替えてptraceを使い続けないのかということです。
難しい部分は間違いなくコントロールをptraceからgdbに移動することです。具体的には、プロセスを停止したままにしてGDBにそこから接続し、デバッグを再開するようにするには、ptrace接続が失われると、子プロセスは実行を再開します。これは私の知る限り避けられません。
たぶん別の方法があるかもしれません。とにかくGDBに切り替える条件は、Aが監視するシステムリソースによって異なりますか、それともBに限定されていますか?
私の記憶が正しいなら、「これは可能ですか?」と「そうでなければ」オプションが同じものを要求するようです。