Skip to content

ZScript DAP Debug server #3009

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 113 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
3549a04
Add STL-standard type traits and functions to TMap to enable for loop…
nikitalita May 16, 2025
ec0bddd
add third-party range-map library
nikitalita May 16, 2025
d19307a
vcpkg: Add cppdap and eventpp libraries, update baseline
nikitalita May 16, 2025
78b2472
DAP implementation
nikitalita May 16, 2025
0b00bc5
Add `FileSystem::FileHash()` to get the CRC32 hash
nikitalita May 16, 2025
8fd4113
add `starting_offset` param to `VMDisasm()` for debugger disassembly …
nikitalita May 16, 2025
aee726d
Add `VMFrameStack::HasFrames()` to prevent assertions when inspecting…
nikitalita May 16, 2025
e291c7f
Add `PC` field to VMFrame, ensure that it is updated whenever vm incr…
nikitalita May 16, 2025
c5aab3a
`ZCCCompiler::CreateClassTypes()`: ensure SourceLumpName is set for c…
nikitalita May 16, 2025
a61a20b
start debug server in d_main, add `vm_debug` cvars and `-debug` CLI arg
nikitalita May 16, 2025
23e1ab7
Add documentation for `vm_debug` cvars
nikitalita May 16, 2025
93c4f87
vm_exec: Add debugger hooks for instruction execution events
nikitalita May 16, 2025
e2db544
c_console: Add debugger hooks for logging events in `PrintString`
nikitalita May 16, 2025
51a0b57
add `.cache/` to gitignore
nikitalita May 16, 2025
5f0ccc8
vendor cppdap on main @ 6464cd7
nikitalita May 16, 2025
d4f9c40
vendor eventpp on master @ 1224dd6
nikitalita May 16, 2025
02e9c1c
build: use internal cppdap and eventpp by default
nikitalita May 16, 2025
499e532
dap: fix Binary::GetFunctionLineRange()
nikitalita May 16, 2025
46d3c51
fix bug in range_map::find_ranges
nikitalita May 16, 2025
0043882
make Binary dap::Source dynamic
nikitalita May 16, 2025
3dc29af
cache source code upon retrieval
nikitalita May 16, 2025
8e95c43
refactor Binary into a class, cleanup PexCache
nikitalita May 16, 2025
a63ca56
fix ending session gracefully
nikitalita May 16, 2025
9e737b8
d_main: Stop debug server in D_Cleanup()
nikitalita May 16, 2025
deffa62
Fix connecting to debugger when session already started
nikitalita May 16, 2025
e616c0f
cleanup unused stuff in ZScriptDebugger
nikitalita May 16, 2025
d455b3f
always send TerminateEvents on disconnect if initialized
nikitalita May 16, 2025
4dfbdeb
tweak color display
nikitalita May 16, 2025
e82eb98
Don't cache disassembly lines when scanning scripts
nikitalita May 16, 2025
e1576b4
Cache nodes when getting runtime state
nikitalita May 16, 2025
9521ebf
WIP display locals
nikitalita May 16, 2025
5921db0
Fix display of static arrays
nikitalita May 16, 2025
4f6d83b
Ensure names display in proper order
nikitalita May 16, 2025
e1ffadf
dap: Fix struct locals display, add args display
nikitalita May 16, 2025
042bf70
Support `start` parameter
nikitalita May 16, 2025
aa56d1e
Support `filter` parameter
nikitalita May 16, 2025
826aa6a
remove struct unbound native data display
nikitalita May 16, 2025
20e842c
d_main: fix vm_jit and vm_jit not being disabled soon enough
nikitalita May 16, 2025
5ae90aa
support breaking on abort exceptions
nikitalita May 16, 2025
e8e06f3
dap: refactor game event emitter functions into seperate header
nikitalita May 16, 2025
1e5fc29
dap: show native functions on stack
nikitalita May 16, 2025
7f214c2
dap: Remove "Native" from exception handling, simplify exception even…
nikitalita May 16, 2025
80524d2
dap: add instruction breakpoints
nikitalita May 16, 2025
84777e3
dap: fix display of locals not in scope yet
nikitalita May 16, 2025
54f95b0
dap: Make disassembly view display invalid instructions for non-code …
nikitalita May 16, 2025
e9c6e60
dap: remove dot initializers
nikitalita May 16, 2025
4089f8b
dap: fix local structs in scope
nikitalita May 16, 2025
49c034a
dap: don't parse the non-used options in the launch/attach requests
nikitalita May 16, 2025
e33f5a0
dap: fix local struct view
nikitalita May 16, 2025
cb4ad04
dap: Fix displaying objects that aren't their actual types
nikitalita May 16, 2025
3437865
dap: Fix action and state handling
nikitalita May 16, 2025
fb7b9a7
dap: stack display view
nikitalita May 16, 2025
7e50d39
dap: fix object display view
nikitalita May 16, 2025
289161b
d_dehacked: set qualified name in addition to the printable name
nikitalita May 16, 2025
2929a17
dap: fix displaying breakpoint errors when script isn't loaded
nikitalita May 16, 2025
34a7f64
dap: remove debug print
nikitalita May 16, 2025
7c3de9b
dap: Display parameter names
nikitalita May 16, 2025
3450cc6
dap: Turn down verbosity of logging
nikitalita May 16, 2025
8d61f8c
dap: fix disassembly view
nikitalita May 16, 2025
b19539f
dap: fix performance problems with arrays
nikitalita May 16, 2025
5fd31aa
c_console: emit event only if not PRINT_NODAPEVENT
nikitalita May 16, 2025
510ccc5
dap: improve logging
nikitalita May 16, 2025
a733520
dap: update upstream cppdap library to fix deadlocks on no bind
nikitalita May 16, 2025
b36e52e
dap: Fix ending session on client socket closed
nikitalita May 16, 2025
22e2bf7
dap: prevent DebugServer.h from pulling in `dap` and `ZScriptDebugger.h`
nikitalita May 16, 2025
6e8c93a
dap: fix pause event not being emitted on pause
nikitalita May 16, 2025
1efcd8b
dap: remove eventpp emitters, way too slow
nikitalita May 16, 2025
5f599f5
Remove eventpp dependency
nikitalita May 16, 2025
ca6f6a0
dap: Display correct register names
nikitalita May 16, 2025
0f0f58d
dap: Show special inits in registers
nikitalita May 16, 2025
b31f6d9
dap: Add stack offset to VMLocalVariable
nikitalita May 16, 2025
3be5a7d
dap: fix display of static arrays and local variables on stack vs. re…
nikitalita May 16, 2025
a3cd14b
dap: fix displaying function pointers
nikitalita May 16, 2025
aeb4ab4
dap: tweak color display
nikitalita May 16, 2025
4b5291a
dap: fix scalar display < 4
nikitalita May 16, 2025
f7b3a9a
dap: add Globals display to debugger
nikitalita May 16, 2025
f43f69d
dap: unify methods to get vmvalue
nikitalita May 16, 2025
21cde27
dap: rename free method to freeValue to avoid running afoul of macro …
nikitalita May 16, 2025
ce470d3
fix windows builds
nikitalita May 16, 2025
7a958b8
fix compile on linux
nikitalita May 16, 2025
f440f6e
cleanup
nikitalita May 16, 2025
aaed43b
Fix display of function breakpoints
nikitalita May 16, 2025
59201e2
dap: Don't send back binary files
nikitalita May 16, 2025
a427b40
dap: include sbarinfo in script types (no debug support for anything …
nikitalita May 16, 2025
5620314
dap: don't show ending session message unless initialized
nikitalita May 16, 2025
100068b
fix erroneous commit
nikitalita May 16, 2025
236278b
dap: handle evaluate requests
nikitalita May 16, 2025
880bddb
Fix getting bitfield values
nikitalita May 16, 2025
4880777
Add CVars Scope and evaluation
nikitalita May 16, 2025
5b967da
add running console commands from repl
nikitalita May 16, 2025
058f879
dap: disable commands via repl for now
nikitalita May 16, 2025
02ea15c
fix loading functions DECORATE scripts
nikitalita May 16, 2025
0030b33
Add source information to Dehacked VM functions, add debugging support
nikitalita May 16, 2025
52696aa
dap: cleanup
nikitalita May 16, 2025
287822e
fix resolving archive paths
nikitalita May 16, 2025
76d9be5
don't send source back on native stack frames
nikitalita May 16, 2025
6e50cb9
handle `modules` request
nikitalita May 16, 2025
c499f3c
cleanup
nikitalita May 16, 2025
931f42c
allow evaluating cvars on hover
nikitalita May 16, 2025
5425403
fix oob bpinfos
nikitalita May 16, 2025
9a0b864
fix restarting the game blowing out the debug server
nikitalita May 17, 2025
a59e0a8
dap: process input events while paused to prevent deadlocks
nikitalita May 17, 2025
8c27625
fix getting local state
nikitalita May 20, 2025
b36eba1
dap: fix LocalState alignment
nikitalita May 20, 2025
3c11831
dap: fix DumpStateHelper
nikitalita May 20, 2025
d21ed9a
update cppdap protocol version to 1.68.0
nikitalita May 21, 2025
399c97e
remove cppdap from vcpkg deps
nikitalita May 21, 2025
fa6a0f5
dap: make named variable nodes derive from the same class
nikitalita May 21, 2025
8e93a11
dap: make cvar scope available in native stack frames
nikitalita May 21, 2025
64453a3
handle local variables with conflicting names
nikitalita May 21, 2025
f09e49b
add I_GetWindowEvent() to win32 to only process window events when de…
nikitalita May 21, 2025
3f6c4c5
dap: fix evaluate
nikitalita May 21, 2025
d4d5c2d
dap: fix display of `out` variables
nikitalita May 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,4 @@
/build_vc2019-32
/build__
gzdoom-crash.log
.cache/
17 changes: 17 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,9 @@ option( NO_OPENAL "Disable OpenAL sound support" OFF )

find_package( BZip2 )
find_package( VPX )
if (NOT FORCE_INTERNAL_CPPDAP)
find_package( cppdap CONFIG )
endif()

include( TargetArch )

Expand Down Expand Up @@ -334,6 +337,9 @@ set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${DEB_C_FLAGS} -D_DEBUG" )

option(FORCE_INTERNAL_BZIP2 "Use internal bzip2")
option(FORCE_INTERNAL_ASMJIT "Use internal asmjit" ON)
option(FORCE_INTERNAL_CPPDAP "Use internal cppdap" ON)


mark_as_advanced( FORCE_INTERNAL_ASMJIT )

if (HAVE_VULKAN)
Expand Down Expand Up @@ -385,6 +391,17 @@ else()
set( BZIP2_LIBRARY bz2 )
endif()

if ( CPPDAP_FOUND AND NOT FORCE_INTERNAL_CPPDAP )
message( STATUS "Using system cppdap library, includes found at ${CPPDAP_INCLUDE_DIR}" )
else()
message( STATUS "Using internal cppdap library" )
add_subdirectory( libraries/cppdap )
set( CPPDAP_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libraries/cppdap" )
set( CPPDAP_LIBRARIES cppdap )
set( CPPDAP_LIBRARY cppdap )
set( CPPDAP_FOUND TRUE )
endif()

set( LZMA_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libraries/lzma/C" )

if( NOT CMAKE_CROSSCOMPILING )
Expand Down
8 changes: 8 additions & 0 deletions docs/console.html
Original file line number Diff line number Diff line change
Expand Up @@ -1814,6 +1814,14 @@ <h2>Debugging</h2>
<div class="b">Sends you to the specified coordinates immediately. This can be used
with <a href="#idmypos">idmypos</a> to debug problems in a specific area of a
map.</div>
<div class="v" id="vm_debug">vm_debug</div>
<div class="t">boolean: false</div>
<div class="d">When set to true, the game will enable the ZScript debug
server on the port specified in <i>vm_debug_port</i>. Note that enabling this
will disable JIT and requires restarting the game.</div>
<div class="v" id="vm_debug_port">vm_debug_port</div>
<div class="t">integer: 19021</div>
<div class="d">This is the port that the ZScript debug server will listen on.</div>
</div>
<div id="effects">
<h2>Effects</h2>
Expand Down
4 changes: 4 additions & 0 deletions libraries/cppdap/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
* text=auto

*.sh eol=lf
*.bat eol=crlf
48 changes: 48 additions & 0 deletions libraries/cppdap/.github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
on:
push:
pull_request:

jobs:
linux:
name: ci
runs-on: ubuntu-latest

container:
image: ubuntu:22.04

strategy:
matrix:
include:
- CC: gcc
CXX: g++
- CC: clang
CXX: clang++

# don't run pull requests from local branches twice
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository

env:
DEBIAN_FRONTEND: noninteractive

steps:
- name: Install packages
run: |
apt-get -q -y update
apt-get -q -y install build-essential cmake git clang

- uses: actions/checkout@v3
with:
submodules: 'true'

- name: Build source
run: |
mkdir -p build
cd build
CC=${{ matrix.CC }} CXX=${{ matrix.CXX }} cmake ..
cmake --build .
DESTDIR=../out cmake --install .

- uses: actions/upload-artifact@v4
with:
name: cppdap-${{ matrix.CC }}
path: out/usr/local/
6 changes: 6 additions & 0 deletions libraries/cppdap/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
build/
fuzz/corpus
fuzz/logs
.vs/
.vscode/settings.json
CMakeSettings.json
Loading