2017-10-26 4 views
-1

gbd 또는 lldb를 포함하는 C++ 바이너리를 정적으로 컴파일하여 코드 내에서 디버거를 시작할 수 있습니까?GDB 또는 LLDB를 C++ 프로그램에 내장하고 코드에서 디버거 시작

기본적으로 디버거에서 코드를 실행하지 않고 코드에서 디버거를 생성 할 수 있기를 바랍니다.

가장 좋은 비유는 코드 라인에서 디버거를 시작하기 위해 파이썬 코드에 import ipdb; ipdb.set_trace을 붙여 넣는 것입니다.

답변

2

당신은이 작업을 수행하려면 GDB 또는 LLDB 컴파일 할 필요가 없습니다 : 당신은 자신에 대한 외부 바이너리를 호출 할 수 있습니다

if (some_condition_that_requires_debugging) { 
    char cmd[100]; 
    sprintf(cmd, "/usr/bin/gdb -p %d", getpid()); 
    // invoke debugger on itself 
    system(cmd); 
} 
관련 문제