이것은 gdb set overwrite logging on이 gdb.txt를 올바르게 덮어 써야합니까? a와 다소 관련이 있습니다. .
일부 응용 프로그램의 세션을 실행하고 있다고 가정 해 보겠습니다. 예를 들어 qbittorrent의 예를 다시 살펴 보겠습니다.
이전에 공유 된 것처럼 실행이 발생하는 방식입니다.
$ gdb qbittorrent (gdb) set logging overwrite on (gdb) set logging on (gdb) set pagination 0 (gdb) run
내가 아는 한 가지 방법은 응용 프로그램을 정상적으로 종료하는 것입니다. 그러나 때때로 응용 프로그램이 중단됩니다. / 너무 많은 시간이 걸리거나 단순히 응답하지 않습니다.
그런 다음 남은 유일한 옵션은 CTRL+C
를 사용하는 것입니다.이 방법을 이해하면 기본 애플리케이션이 종료됩니다. , 우리의 예제에서 qbittorrent를 사용하면
(gdb) quit
애플리케이션을 종료하는 다른 방법이 있는지 여부를 확인하고 gdb를 종료 할 수 있습니다. gdb 세션이 계속 실행되거나 유일한 방법은 위에서 언급 한 조잡한 방법입니다.
AFAI는 응용 프로그램 프로세스를 종료하는 것이 첫 번째가 아닌 마지막 솔루션이어야한다는 것을 알고 있습니다.
댓글
Answer
이를 위해 신호를 사용할 수 있습니다. 프로그램을 시작하기 전에 USR1
또는 USR2
를 설정하여 gdb
에 영향을주지 않고 프로그램 :
handle SIGUSR1 nopass
그런 다음 프로그램을 실행하고 중지해야 할 때 다음에서 kill -USR1
를 실행합니다. 적절한 (자식) pid를 가진 또 다른 쉘. gdb
는 응용 프로그램을 일시 중지 한 다음 중단 점을 추가하고 상태를 검사 할 수 있습니다. 원하는 경우 cont
.
gdb
에서 실행할 때 Ctrl-C는 응용 프로그램을 종료하지 않고 디버거에 침입하여 결정할 수 있습니다. 해야 할 일.cont
를 사용하여 " 신호를 삼키면 " 애플리케이션이 방해받지 않고 계속됩니다. 또는signal 2
를 사용하여 SIGINT (2)를 애플리케이션에 전달합니다. 또는kill
를 사용하여 애플리케이션을 종료합니다.