PHP로 자신의 어셈블리 언어를 만들고 VS 코드의 언어로 디버깅 프로그램을 확장해 보면

3445 단어 VSCode
이 보도는 Visual Studio Code Advent Calendar 2017 14일째 보도입니다.

입문


VS 코드를 사용하여 Prolog를 쓰는 보기 드문 사람이지만, Prolog의 디버거도 VS 코드가 대단하지만, 아쉽게도 아직 만족스러운 동작을 하지 못했다.그래서 디버깅 프로그램에 대해 여러 가지 조사를 했는데 마음에 안 들면 하면 되지 않겠습니까?자체 제작 언어와 서버 프로그램의 교환은 협의를 결정해야 하지만 해 본 적이 없기 때문에 어떻게 해야 좋을지 모르겠다.참, VSCode의 디버거는 TypeScript에서 서버 프로세스를 호출하여 만듭니다.TypeScript 유형이 있기 때문에 디버깅 프로그램은 쉽게 만들 수 있지만, VS 코드의 디버깅 프로그램 프로토콜을 직접 사용하면 중간에 TypeScript를 두지 않아도 VS 코드와 대화해서 디버깅 프로그램을 이동할 수 있습니다.이렇게 생각해서 PHP로 디버깅 프로그램을 만들어 봤어요.

vscode-debugger-simple-asm 일


이것은 간단한 어셈블리 언어를 만들고 그 디버거를 만드는 샘플 프로젝트입니다.
일반적으로 TypeScript로 Debug Extensions를 쓰지만, 간단한 표준 입력과 출력으로 VS Code Debug Protocol 디버깅을 사용하는 서버가 곧 쓸 수 있기 때문에 PHP로 Debug Extensions를 써 보았습니다.

디버깅 프로그램을 시도할 때, 작업을 다시 불러올 필요가 없기 때문에, 디버깅 프로그램의 디버깅과 동시에 개발을 진행할 때 매우 편리할 수 있습니다.
또 첫 디버깅 프로그램 개발이지만 어떻게 해야 할지 모르는 상황에서 VScode 프로토콜을 직접 사용하는 것을 고려하고 싶다면 도움이 될 수 있다.

다음 어셈블리를 디버깅할 수 있습니다.
asm.txt
main:   call addp 1 2 a
        print a
        ret 0

addp:   enter a b
        add a b c
        ret c

디버거 구성

  • asm.txt는 디버거에서 디버깅할 수 있는 어셈블리 프로그램의 원본 코드입니다.
  • package.json: VScode 확장 설정
  • src/extensions.ts:VScode에서 가져온 확장.out/src.js에서 전개합니다.디버그 서버 프로세스를 시작하고 표준 입력/출력을 사용하여 디버그 프로그램을 실행합니다.나는 거의 아무것도 하지 않는다.
  • dist/server.sh:디버거의 서버는 외부 프로세스입니다.dist/server.php를 호출하여 표준 오류를 파일에 토출합니다.
  • dist/server.php: 디버거의 주체입니다.언어 기능 자체도 포함되어 있다.VScode를 디버깅할 때 프로세스를 시작합니다.
  • src/server.ts: 이것은 TypeScript 디버거의 호스트입니다.이 디버거가 없어도 작동할 수 있다.
  • client.php: 디버그 서버에 연결하고 메시지를 받을 수 있습니다.디버거의 메시지 내용을 이해하는 데 도움이 됩니다.
  • 실행 방법

    npm install
    make ts
    make
    
    그렇다면 이 프로젝트 자체가 ~/입니다.vscode/extensions/asm-php-0.01로 복사합니다.
    처음에는 다시 한 번 읽어야 한다.F1을 누른 후 창을 다시 불러옵니다.
    두 번째 이후에는 외부 프로세스만 고쳐도 다시 읽지 않을 수 있습니다.
    그리고 서버.sh를 고쳐서 읽기 프로그램을 php에서 js로 바꿀 수도 있습니다.
    디버그 콘솔이 3으로 표시되면 성공합니다.

    태그 생성 또는 생성을 실행하면 디버그 서버의 표준 오류 출력이 터미널에 표시되고 로그로 사용됩니다.하지만 Unix 환경이 아니면 이동하지 않을 수 있습니다.
    make의 로그는tail 명령/tmp/서버입니다.로그만 표시하기 때문에 표시하지 않아도 동작할 수 있습니다.

    다음은 asm.txt를 열고 인터럽트를 설정하고 디버깅합니다.
    프로그램을 중지한 후에도 변수의 내용을 바꿀 수 있습니다.

    마운트 해제

    make uninstall
    
    확장이 제거됩니다.

    참고 자료


    https://github.com/hsk/vscode-debugger-simple-asm  

    좋은 웹페이지 즐겨찾기