Windows에서 포니 프로그램 디버깅

1290 단어 pony
포니는 3년 전 윈도우즈에서 디버깅 정보 생성을 없애고 폭력적이었다.
#if defined(PLATFORM_IS_WINDOWS)
  opt.strip_debug = true;
#endif

디버깅 정보를 고정적으로 제거하는 선택이다.
하지만 저는 주로 윈도우를 사용해서 개발을 하고 있기 때문에 불편합니다. 그래서 이 옵션을 제거하고 코드뷰 정보 생성(총 두 줄 코드 변경)을 시도해 봤습니다.
다시 컴파일하면 LLVM에서 오류가 발생합니다.
Assertion failed: !isa(Scope) && "shouldn't make a namespace scope for a type"

이 오류는 포니 컴파일러에서 부정확한 정보를 생성했기 때문에 고치려면 반드시 많은 공을 들여야 하고 다른 방법을 강구해야 한다는 것을 설명한다.
  • 포니 컴파일러를 수정하고 CodeView를 열고 strip 를 제거합니다debug
    pm->addModuleFlag(Module::Warning, "CodeView", 1);
  • Pony 프로그램을 컴파일할 때 LLVMir
    ponyc . -d -r=ir
    출력
  • clang으로 목표 파일 생성:
    clang -c main.ll
  • 링크로 링크
    link /DEBUG advapi32.lib ws2_32.lib libponyrt.lib crypto.lib main.o
  • link/DEBUG 옵션은 디버깅 정보를 생성하고 Visual Studio Debugger로 디버깅할 수 있습니다.
    기본적인 단점, 걸음걸이, 변수 보기는 문제없고, 포니의 표준 라이브러리와 실행 시까지 걸음걸이가 가능합니다.
    하지만 몇 가지 문제가 있다.
  • 복잡한 대상, 유형 정보가 부족하면 유용한 정보를 보기 어렵고 나티스가 있으면 더욱 실용적이다
  • 복잡한 제어 프로세스가 혼란스러워 match, is 문장 지원이 좋지 않다
  • actor의behavior는 비동기 호출로 직접 접근할 수 없음
  • github에서 issue: Enable Windows debugging을 보냈습니다.

    좋은 웹페이지 즐겨찾기