1
부착 된 GBD로 실행하는 동안 실행하면 응용 프로그램의 실행을 중단해야하지만 GDB가 실행되고 있지 않으면 계속 실행해야하는 디버깅 코드가 있습니다.gdb가 연결되어 있으면 어떻게 중단 할 수 있습니까?
try
{
if(some_complex_expression)
{
gdb_should_break_here();
do_some_stuff();
throw MyException();
}
}
catch(const MyException & e)
{
handle_exception_and_continue();
}
무엇을 할 수 gdb_should_break_here해야합니다
는내가 함께 일하고 있어요 코드 구조에서이 같이 보입니다?
예, 아마도 가장 쉬운 방법 일 것입니다. 어떤 시점에서 로깅 코드를 넣는 것이 유용 할 수도 있습니다. 또한 코드를 최적화하더라도 gdb_should_break_here의 구현이 별도의 파일에 있고 최종 응용 프로그램에 별도로 링크하면 빈 (GDB)에도 불구하고 GDB가 중단 될 수 있습니다 . –
아쉽게도 그 기능은 헤더 전용 라이브러리의 일부입니다. 내가보고있는 코드는 본질적으로 오류 로깅 및 처리 코드의 일부로 아마 더 많은 로깅이 적절하지 않을 수 있습니다. 드문 에지 사례를 디버깅하는 데 정말로 필요합니다. 특히 스택 추적이 필요한 경우 특히 그렇습니다. –