忘備録。Visual Studio CodeはWindows側で実行している。
wslでアプリのソースとバイナリを用意
ここではubuntuを使っている。
/etc/apt/sources.listでソースパッケージを有効に
デフォルトではソースパッケージが無効になっているので、/etc/apt/sources.list
を開いて、deb-srcで始まる行のコメントを削除する。
fortuneで試す
fortuneというコマンドラインアプリがあるので、これのソースコードと取得し、wsl内でビルドしておく。ディレクトリは/mnt/内(Windowsとwslで両方から操作できる)で行うこと。
1 2 3 4 5 6 7 8 9 10 |
$ mkdir /mnt/y/work/fortune $ cd /mnt/y/work/fortune/ $ sudo apt-get update $ which fortune /usr/games/fortune $ dpkg-query --search /usr/games/fortune fortune-mod: /usr/games/fortune $ sudo apt-get build-dep fortune-mod $ apt-get source fortune-mod $ cd fortune-mod-1.99.1 |
これでソースが取得できたので、これをデバッグビルドする。このアプリの場合はMakefileがついていて’make debug’ができるようなので実行する。
が、これがエラーになるのでCFLAGSを指定してビルドした。
1 2 3 4 5 |
$ make clean $ CFLAGS="-g -DDEBUG" LDFLAGS="" make $ fortune/fortune Don't look now, but the man in the moon is laughing at you. $ |
これでwsl側の準備ができた。
VSCodeを開く
VSCodeでフォルダY:\work\fortune\fortune-mod-1.99.1を開き、デバッグ環境C++(GDB/LLDB)でlaunch.jsonを開き以下を入力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "C++ Launch", "type": "cppdbg", "request": "launch", "program": "/mnt/y/work/fortune/fortune-mod-1.99.1/fortune/fortune", "args": [""], "stopAtEntry": true, "cwd": "/mnt/y/work/fortune/fortune-mod-1.99.1", "environment": [], "externalConsole": true, "windows": { "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] }, "pipeTransport": { "pipeCwd": "", "pipeProgram": "c:\\windows\\sysnative\\bash.exe", "pipeArgs": ["-c"], "debuggerPath": "/usr/bin/gdb" }, "sourceFileMap": { "/mnt/y": "y:\\" } }, ] } |