애플리케이션이 응답하지 않을 때 gdb에서 실행 중인 애플리케이션을 정상적으로 종료하는 방법

애플리케이션이 응답하지 않을 때 gdb에서 실행 중인 애플리케이션을 정상적으로 종료하는 방법

뭔가 연관이 있는 것 같아gdb 설정 재정의 로깅이 gdb.txt를 덮어써야 한다는 것이 맞나요?.

어떤 애플리케이션의 세션을 실행하고 있다고 가정해 보겠습니다. 설명을 위해 qbittorrent를 다시 예로 들어 보겠습니다.

이전에 공유한 것처럼 실행이 어떻게 이루어지는지 –

$ gdb qbittorrent 
(gdb) set logging overwrite on 
(gdb) set logging on 
(gdb) set pagination 0
(gdb) run

제가 아는 한 가지 방법은 응용 프로그램을 정상적으로 종료하는 것입니다. 그러나 때때로 응용 프로그램이 멈추거나 시간이 너무 많이 걸리거나 전혀 응답하지 않는 경우가 있습니다.

그런 다음 나에게 남은 유일한 옵션은 CTRL+C이것을 사용하는 것이었습니다. 올바르게 이해했다면 qbittorrent 예제에서 기본 응용 프로그램을 종료한 다음 다음을 통해 gdb를 종료할 수 있었습니다.

(gdb) quit

애플리케이션을 종료하고 gdb 세션을 계속 실행하는 다른 방법이 있습니까? 아니면 위에서 언급한 조잡한 방법인 유일한 방법입니다.

AFAI는 신청 절차를 종료하는 것이 첫 번째가 아닌 마지막 해결책이어야 한다는 것을 알고 있습니다.

답변1

이를 위해 신호를 사용할 수 있습니다. 프로그램을 시작하기 전에 프로그램에 영향을 주지 않고 설정 USR1이나 인터럽트를 수행하십시오 USR2.gdb

handle SIGUSR1 nopass

그런 다음 프로그램을 중지해야 할 때 kill -USR1적절한 (하위)pid를 사용하여 다른 셸에서 프로그램을 실행할 수 있습니다. gdb애플리케이션이 일시 중지되면 중단점을 추가하고 상태를 검사할 수 있으며 필요한 경우 재개를 사용할 수 있습니다 cont.

관련 정보