我正在使用gdbserver來調試遠程進程。我可以在啓動並等待輸入後將gdbserver附加到進程。如何在啓動時將gdbserver附加到進程?
但是,我想在啓動時將gdbserver附加到進程。這個過程是通過一個shell腳本啓動的,我不能改變這個過程是如何啓動的,即我不能修改shell腳本來通過調用gdbserver來啓動這個過程。
如何在啓動時將gdbserver附加到此進程?
編輯:我可以在main()
開始時創建一個等待循環。例如一個循環等待直到它找到一個文件,在預定位置:根據需要,說touch /home/username/CONTINUE
退出循環
#include <unistd.h>
int main() {
while(access("/home/username/CONTINUE", F_OK) == -1)
sleep(1);
/*
...all the rest of main()
*/
return 0;
}
我們可以將gdbserver的,而這個過程是忙於這個循環中,設置斷點。但是這需要我們能夠訪問源代碼,編譯二進制文件並將其放置在目標機器上。我正在尋找比這更好,更簡單的方法。
我相信你在思考_too complicated_ :-D。看看我的答案。 – user0042
你能夠在遠程系統上運行systemtap嗎?如果是這樣,您可以運行Tom Tromey的[preattach](https://github.com/tromey/gdb-helpers/blob/master/gdbhelpers/preattach.stp)以在新流程啓動時立即停止,而無需需要更改任何源代碼。 –