gdb를 사용하여 프로그램을 디버깅하고 있습니다. 처음에는 내 load
실행 파일을 실행 한 다음 프로그램을 실행하려면 continue
입니다. 때로는 프로그램 실행을 중단하고 싶기 때문에 Ctrl + C
을 수행합니다.gdb : gdb를 종료하지 않고 종료하는 프로그램
제 문제는 이걸 닫으면 입니다. 내 프로그램과 gdb가 모두입니다. gdb를 종료하지 않고 프로그램을 종료하려면 어떻게해야합니까?
gdb를 사용하여 프로그램을 디버깅하고 있습니다. 처음에는 내 load
실행 파일을 실행 한 다음 프로그램을 실행하려면 continue
입니다. 때로는 프로그램 실행을 중단하고 싶기 때문에 Ctrl + C
을 수행합니다.gdb : gdb를 종료하지 않고 종료하는 프로그램
제 문제는 이걸 닫으면 입니다. 내 프로그램과 gdb가 모두입니다. gdb를 종료하지 않고 프로그램을 종료하려면 어떻게해야합니까?
Windows 에서처럼 보이지만, Ctrl-Break
이 아닌 Ctrl-C
을 사용해야합니다. 이 page을 참조하십시오.
발췌 :
C-C를 입력하여 중단 할 수없는`Ctrl-C를 '키 스트로크 (keystroke)의 특별한 의미를 전환 할 SetConsoleMode를 호출 MS-Windows 프로그램
. MS-Windows의 gdb는 대체 인터럽트 키 시퀀스로 C-를 지원합니다.이 시퀀스는 C-c를 무시하더라도 디버거를 인터럽트하는 데 사용할 수 있습니다.
감사합니다. 이것은 여전히 GDB를 종료합니다. 이제 종료 될 때 "Quit (core dumped)"라고 쓰여집니다. – Randomblue
@Randomblue Oh blimey - 매우 행복해 보이지 않습니다. Microsoft 컴파일러로 전환하는 것 이외에 무엇을 제안해야할지 모르겠다. (Windows SDK는 무료 다.) – trojanfoe
@Randomblue 당신은'cmd' 또는'sh' 콘솔에서 물건을 실행합니까? 디버깅 된 프로그램 Cygwin 또는 Win32가 기본입니까? (레코드 :'gdb' Cygwin 또는 Win32?))) –
우선 (gdb 내부가 아닌) 프로그램을 실행 한 다음 해당 PID를 찾으십시오.
다른 쉘에서는 gdb --pid=<your program's pid>
을 실행하십시오. gdb를 실행중인 프로그램에 연결합니다. 프로그램의 실행을 중지하므로 계속하려면 c
을 실행하십시오.
이제 프로그램을 종료하면 gdb 세션이 그대로 유지됩니다.
내 프로그램이 원격 호스트에서 실행 중입니다. (ARM 칩) – Randomblue
gdb 내부에서 kill
을 사용해 보셨습니까?
예. 하지만'continue' 후에 나는 gdb 명령 프롬프트를 실행하지 않으므로 아무 일도 일어나지 않습니다. – Randomblue
어떻게 @trojanfoe가 말했습니다. Ctrl-C는 프로그램을 중단시켜 gdb 콘솔을 다시 사용할 수있게합니다. 그러나'start'를 사용하여 프로그램을 시작하십시오. 실행은'main' 함수의 시작 부분에서 중단되어야합니다. 그런 다음 kill을 사용하여 프로그램을 종료하십시오. – Saphrosit
'start'를 시도 할 때 "No symbol table loaded."라는 "file"명령을 사용하십시오. " – Randomblue
응용 프로그램을 중단하려면 ctrl-c를 사용하십시오. 그런 다음 GDB 프롬프트에서 "signal SIGINT"를 실행하면 응용 프로그램에이 신호가 전송되어 명령 행에서 ctrl-c를 수행 할 때 일반적으로 수행했던 것과 동일한 작업을 수행하게됩니다.
그런 일은 일어나지 않아야합니다. Ctrl-C는 프로그램을 인터럽트 ** (종료하지 않음)하기로되어 있으며 gdb를 종료하지 않아도됩니다. 어떤 환경을 사용하고 있습니까? – trojanfoe
Cygwin을 사용하고 있습니다. 기묘한. – Randomblue