ghci debug viewer on Visual Studio Code

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD3 licensed by phoityne_hs
Maintained by

Phoityne VSCode

Phoityne is a ghci debug viewer for Visual Studio Code.


  • [2017/04/02] phoityne-vscode released.
    Marketplace phoityne-vscode-0.0.11 hackage phoityne-vscode-
  • Release Summary FIX 10 : Unable to set breakpoints FIX 11 : Debugger not progressing past IO ADD 12 : support Column breakpoints MODIFY 6 : add "stopOnEntry" setting to launch.json * MODIFY : add "--ghci-options -fprint-evld-with-show" to ghci command option in launch.json, instead of hard-coded.



  • Limitation. Breakpoint can be set in a .hs file which defineds "module ... where".
  • Limitation. Source file extension must be ".hs"
  • Limitation. Can not use STDIN handle while debugging.
  • When you start debugging for the first time, .vscode/tasks.json will be created automatically. Then you can use F6, F7, F8 shortcut key. F5 : start debug F6 : show command menu (for stack watch) Shift + F6 : stop stack watch F7 : stack clean & build F8 : stack test F9 : put bp on current line * Shift + F9 : put bp on current column
  • While debugging, you can use F5, F9, F10, F11 shortcut key. F5 : jump to next bp F9 : put bp on the line Shift + F9 : put bp on the column F10 : step next * F11 : step into


Run stack install

% stack install phoityne-vscode
  . . . . .

Add 'phoityne-vscode.exe' to PATH environment.

% where $path:phoityne-vscode.exe
C:\Users\[user name]\AppData\Roaming\local\bin\phoityne-vscode.exe

% phoityne-vscode --version
% code

Install vscode extensions

  1. run VSCode and open stack project Folder from file menu.
  2. open Extensions from side menu of VSCode.
  3. search "haskell"
  4. select "Haskell GHCi debug viewer Phoityne"


Run to Cursor


Bindings & Watch

The variable added to watch will be forced.


Stack trace


Break condition


Hit count break condition

Supports these operators. == /= <, > <=, >= mod, % just digit is same with '>='


Repl & Completions



  • supportsConfigurationDoneRequest : yes
  • supportsFunctionBreakpoints : yes
  • supportsConditionalBreakpoints : yes
  • supportsHitConditionalBreakpoints : yes
  • supportsEvaluateForHovers : yes
  • exceptionBreakpointFilters : no
  • supportsStepBack : no
  • supportsSetVariable : no
  • supportsRestartFrame : no
  • supportsGotoTargetsRequest : no
  • supportsStepInTargetsRequest : no
  • supportsCompletionsRequest : yes
  • supportsModulesRequest : no
  • additionalModuleColumns : no
  • supportedChecksumAlgorithms : no
  • supportsRestartRequest : no
  • supportsExceptionOptions : no
  • supportsValueFormattingOptions : no
  • supportsExceptionInfoRequest : no



|NAME|REQUIRED OR OPTIONAL|DEFAULT SETTING|DESCRIPTION| |:--|:--:|:--|:--| |startup|required|${workspaceRoot}/test/Spec.hs|debug startup file, will be loaded automatically.| |ghciCmd|required|stack ghci --test --no-load --no-build --main-is TARGET --ghci-options -fprint-evld-with-show|launch ghci command, must be Prelude module loaded. For example, "ghci -i${workspaceRoot}/src", "cabal exec -- ghci -i${workspaceRoot}/src"| |ghciPrompt|required|H>>=|ghci command prompt string.| |stopOnEntry|required|true|stop or not after debugger launched. |logFile|required|${workspaceRoot}/.vscode/phoityne.log|internal log file.| |logLevel|required|WARNING|internal log level.|


|TASK NAME|REQUIRED OR OPTIONAL|DEFAULT SETTING|DESCRIPTION| |:--|:--:|:--|:--| |stack build|required|stack build|task definition for F6 shortcut key.| |stack clean & build|required|stack clean && stack build|task definition for F7 shortcut key.| |stack test|required|stack test|task definition for F8 shortcut key.| |stack watch|required|stack build --test --no-run-tests --file-watch|task definition for F6 shortcut key.|

Version history


20170402 phoityne-vscode- [FIX] 10 : Unable to set breakpoints [FIX] 11 : Debugger not progressing past IO [ADD] 12 : support Column break points [MODIFY] 6 : adding stopOnEntry setting on launch.json * [MODIFY] : add ghci-options -fprint-evld-with-show to stack run command in launch.json file.

20170205 phoityne-vscode- * [FIX] 8 : Unterminated process after leaving GHCi

20161218 phoityne-vscode- [ADD] Hit count break conditionに対応した。 [FIX] エラー終了時にterminate eventを送信するように修正した。

20161009 phoityne-vscode- [MODIFY] REPL結果をイベントで返すように変更した。EvaluateResponseで返した場合は、複数行表示ができないため。 [MODIFY] REPLにおいて、複数行の入力に対応した。 [MODIFY] REPLにおいて、デバッグ関連のコマンドを実行しないように変更した。 [FIX] バインディング変数情報の取得において、複数行にまたがる情報のパースが失敗していた箇所を修正した。

20160919 phoityne-vscode- [ADD] ConfigurationDoneRequestに対応した。 [ADD] CompletionsRequestに対応した。 [MODIFY] Hover時の型表示を改善した。 [MODIFY] Hover時のforce実行を止めた。 * [FIX] setBreakpointsResponse, setFunctionBreakpointsResponseのBodyデータにおいて、キー名を修正した。

20160804 phoityne-vscode- [MODIFY] モジュール構成の変更。 [MODIFY] debugger adopter interface Capabilitiesの変更に対応した。

20160704 phoityne-vscode- [MODIFY] debugger adopter interface Capabilitiesの変更に対応した。 [MODIFY] debugger adopter interface StackFrameの変更に対応した。(endLin, endColumnの追加) * [MODIFY] debugger adopter interface Variableの変更に対応した。(typeの追加)

20160626 phoityne-vscode-

  • [MODIFY] launchリクエストのghciCmdパラメータで指定したghci起動コマンドを使用するように変更した。
  • [MODIFY] ghciの起動に失敗した場合、デバッグを終了するように修正した。

20160605 phoityne-vscode-

  • [MODIFY] launchリクエストのnoDebugパラメータをMaybeに変更した。

20160601 phoityne-vscode-

  • [MODIFY] スタックトレースの表示を番号から関数名に変更した。
  • [MODIFY] GHC-8.0.1のghciにおいて、:step結果の出力変更(Stopped in)に対応した。

20160515 phoityne-vscode-

  • [ADD] tasks.jsonが存在しない場合は、作成するようにした。
  • [ADD] package.json にキーバインディング設定を追加した。(stack build, stack clean, stack test, stack watch)
  • [ADD] hover requestに対して、:info結果を返すようにした。

20160508 phoityne-vscode-

  • [ADD] デバッガ起動後、ファイル保存時にghciにリロードするようにした。
  • [ADD] 条件付きブレークポイントに対応した。

20160504 phoityne-vscode-

  • [INFO] Initial release.

comments powered byDisqus