phoityne-vscode: Haskell Debug Adapter for Visual Studio Code.

[ bsd3, development, program ] [ Propose Tags ]

Please see README.md


[Skip to Readme]
Versions 0.0.1.0, 0.0.2.0, 0.0.3.0, 0.0.4.0, 0.0.5.0, 0.0.6.0, 0.0.7.0, 0.0.8.0, 0.0.9.0, 0.0.10.0, 0.0.11.0, 0.0.12.0, 0.0.13.0, 0.0.14.0, 0.0.15.0, 0.0.16.0, 0.0.17.0, 0.0.18.0, 0.0.19.0, 0.0.20.0, 0.0.21.0, 0.0.22.0, 0.0.23.0, 0.0.24.0, 0.0.25.0, 0.0.26.0, 0.0.27.0
Change log Changelog.md
Dependencies aeson, base (>=4.7 && <5), bytestring, Cabal, cmdargs, conduit, conduit-extra, containers, data-default, directory, filepath, fsnotify, hslogger, lens, MissingH, mtl, parsec, process, resourcet, safe, safe-exceptions, split, text, transformers [details]
License BSD-3-Clause
Copyright 2016-2018 phoityne_hs
Author phoityne_hs
Maintainer phoityne.hs@gmail.com
Category Development
Home page https://github.com/phoityne/phoityne-vscode
Bug tracker https://github.com/phoityne/phoityne-vscode/issues
Uploaded by phoityne_hs at Sat Oct 20 12:19:56 UTC 2018
Distributions NixOS:0.0.27.0
Executables phoityne-vscode
Downloads 4237 total (108 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2018-10-20 [all 3 reports]
Hackage Matrix CI

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for phoityne-vscode-0.0.27.0

[back to package description]

Requirements

Install phoityne-vscode from hackage.

Especially for GHC8

Install phoityne-vscode and haskell-dap.
In the launch.json, add "--with-ghc=haskell-dap" to ghciCmd variable.

> stack install phoityne-vscode haskell-dap

Limitations

  • The source file extension must be ".hs"
  • Can not use STDIN handle while debugging.
  • Using GHC7, see the README.

Features

Continue & Steps

01_F5_F10_F11.gif

Stacktrace

The variable added to watch will be forced.

03_stacktrace.gif

Bindings

04_variables.gif

Break condition

05_break_cond.gif

Console output

02_console_out.gif

Quick Start

This is a new experimental feature.
Note!!, This function will automatically change the .vscode / launch.json file. 06_quick_start.gif

Shortcut keys

When you start debugging for the first time, .vscode/tasks.json will be created automatically. Then you can use F6, F7, F8 shortcut keys.

  • F5 : start debug
  • F6 : show command menu (for stack watch)
  • Shift + F6 : stop stack watch
  • F7 : stack clean & build
  • F8 : stack test
  • F9 : put a breakpoint on the current line
  • Shift + F9 : put a breakpoint on the current column

While debugging, you can use F5, F9, F10, F11 shortcut keys.

  • F5 : jump to next bp
  • F9 : put bp on the line
  • Shift + F9 : put bp on the column
  • F10 : step next
  • F11 : step into

Configuration

.vscode/launch.json

|NAME|REQUIRED OR OPTIONAL|DEFAULT SETTING|DESCRIPTION| |:--|:--:|:--|:--| |startup|required|${workspaceRoot}/test/Spec.hs|debug startup file, will be loaded automatically.| |startupFunc|optional|"" (empty string)|debug startup function, will be run instead of main function.| |startupArgs|optional|"" (empty string)|arguments for startup function. set as string type.| |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.| |ghciInitialPrompt|optional|"Prelude> "|initial pormpt of ghci. set it when using custom prompt. e.g. set in .ghci| |stopOnEntry|required|true|stop or not after debugger launched. |mainArgs|optional|"" (empty string)|main arguments.| |logFile|required|${workspaceRoot}/.vscode/phoityne.log|internal log file.| |logLevel|required|WARNING|internal log level.|

changing ghci initial prompt

If you change ghci prompt in .ghci file, or ghci prompt is changed from "Prelude>" by applying NoImplicitPrelude extension, set the initial prompt variable to same prompt string.

% diff .vscode/launch.json.old .vscode/launch.json
19c19
<             "ghciInitialPrompt": "Prelude> "      // default value.
---
>             "ghciInitialPrompt": "> "             // e.g.
%

Make sure needs of the last space, and don't forget adding it.

setting the startup hs file

Set the startup variable to the path of .hs file in which main function is defined.

% diff .vscode/launch.json.old .vscode/launch.json
10c10
<             "startup": "${workspaceRoot}/test/Spec.hs",    // default value.
---
>             "startup": "${workspaceRoot}/app/run.hs",     // e.g.
%

setting the startup function

If you want to run the specific function instead of main function, set the startupFunc variable.
For example, when specifying the following startDebug function,

startDebug :: String -> IO ()
startDebug name = do
  putStrLn "hello"
  putStrLn name 

set the valiavles in the launch.json file.

% diff .vscode/launch.json.old .vscode/launch.json
11c12
<             "startupFunc": "",    // default value.
<             "startupArgs": "",    // default value.
---
>             "startupFunc": "startDebug",       // e.g.
>             "startupArgs": "\"phoityne\"",     // e.g.
%

changing log level

For debuging phoityen itself, change the log level to DEBUG.
Adding Issue with the debug log.

% diff .vscode/launch.json.old .vscode/launch.json
12c12
<             "logLevel": "WARNING",               // default value.
---
>             "logLevel": "DEBUG",                 // e.g.
%

.vscode/tasks.json

|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.|