2016-09-02 2 views
0

이 질문은 내게 아주 어리 석고 보입니다. 그러나 이것이 가능하다면 정말 도움이 될 것입니다.SSH 및 GDB를 통해 프로세스를 시작 하시겠습니까?

내 응용 프로그램이 충돌하고 디버깅해야합니다. SSH (HTTP 서버)를 통해 다른 컴퓨터에서이 응용 프로그램을 실행합니다. 항상 GDB와 SSH를 통해 애플리케이션을 실행하는 터미널을 떠날 수 있다면 버그를 찾을 수있을 것입니다. 하지만 그렇게 할 수있는 무료 컴퓨터가 없습니다. 내가 무엇을 할 수 있을지? 거기에 nohup(1) 플러스 &>와 같은 물건을 GDB를 시작할 수있는 방법, 그래서 GDB 출력 (예를 들어, where 명령)을 볼 수 있습니까?

답변

2

screen이라는 고전적인 유닉스 프로그램은 당신의 친구 (혹은 그 경쟁자 tmux)입니다. 여러 가상 머신에서 가상 콘솔을 열어 둘 수 있습니다 :

screen 

이러한 세션이 시작됩니다. 당신은 그것을 사용하여 분리 할 수 ​​있습니다;

screen -r 

을 사용하면 나중에 다시 연결할 수 있습니다.

그러나, 당신은 그것조차 필요하지 않습니다; 프로그램이 충돌 할 때 프로그램을 코어 덤프 (core dump)로 남겨 두십시오. ulimit -c unlimited은 "충돌하는 모든 프로그램은 코어 덤프를 남깁니다"라고 말합니다. 나중에 gdb를 사용하여 코어 덤프를 열면 추락했을 때 gdb에서 프로그램을 실행 한 것처럼 모든 것이됩니다.

gdb core.123456 
+0

고마워요! 넌 나를 구했다! – matheuscscp

+0

충돌이 발생했지만 코어 덤프 파일이 남아 있지 않습니다. 어쩌면 프로세스가 코어 덤프를 종료하고 종료하는 신호를받지 못하는 것일 수 있습니다. gdb의 프롬프트가 나타나면 어떻게'screen'에서 분리 할 수 ​​있습니까? 그게 가능하니? – matheuscscp

+0

동일한 키 조합 :) –

관련 문제