2015-01-07 3 views
1

gdb를 제대로 작동시키지 못하는 것처럼 Mac OSx (Yosemite)에서 lldb 디버거를 사용하는 법을 배우고 싶습니다. 그러나 나는 이상한 문제에 부딪 쳤고 누군가가 나를 올바른 방향으로 인도 할 수 있는지 궁금해했다. 기본적으로 lldb에 응용 프로그램을로드하고 실행을 실행 한 후에는 해당 응용 프로그램에 대해 GUI를 열지 않고 명령 프롬프트를 반환합니다. 첨부 된 내용은 다음과 같습니다. 어떤 생각?lldb application on mac os

% lldb /Applications/Navicat\ for\ SQL\ Server.app/Contents/MacOS/Navicat\ for\ SQL\ Server 
(lldb) target create "/Applications/Navicat for SQL Server.app/Contents/MacOS/Navicat for SQL Server" 
Current executable set to '/Applications/Navicat for SQL Server.app/Contents/MacOS/Navicat for SQL Server' (x86_64). 
(lldb) run 
Process 2881 launched: '/Applications/Navicat for SQL Server.app/Contents/MacOS/Navicat for SQL Server' (x86_64) 
Process 2881 exited with status = 45 (0x0000002d) 
(lldb) 
+1

그냥 사이드 노트 : 당신이 gdb를 잘 알고있는 경우

BTW,이 페이지가 도움이 될 수 당신이 프로세스를 디버깅하려고 할 때 그것은 바로 코드 (45)에 존재하는 대부분의 프로세스가 디버거를 차게하는'ptrace (PT_DENY_ATTACH ...) '를 호출했을 가능성이 있습니다. 이 문제를 해결하는 가장 좋은 방법은 ptrace 스텁에 중단 점을 설정하고 강제로 0을 반환하는 것입니다. – Andy

+1

@Sonic 코멘트에 대해 더 자세히 알고 싶은 사람은 다음을 읽어보십시오. https://www.coredump.gr/articles/ios-anti-debugging-protections-part-1/ – Puttin

답변

0

GUI를 설치하지 않고 프로세스가 종료 된 것처럼 보입니다 (상태 45 포함). 종료 할 때 중단 점을 설정해보십시오. 실행하기 전에 중단 점을 맞추기 전에 중단 점을 설정해보십시오. 중단 점을 설정하십시오.그 시점에서 백 트레이스를 보면 왜 그것이 조기에 나가고 있었는지를 보여줄 수 있습니다.

http://lldb.llvm.org/lldb-gdb.html

+0

또한, 이것이 가장 가능성이 높지는 않지만 문제가 있다면, 앱의 경로 중 Contents/MacOS/... 부분을 지정할 필요가 없으며 lldb에 .app까지 지정하면 바이너리를 알 수 있습니다. –

관련 문제