A fork of the discontinued VKDoom with a few missing fixes.
  • C++ 71.9%
  • C 20.1%
  • ZenScript 5.8%
  • Yacc 0.6%
  • CMake 0.5%
  • Other 0.8%
Find a file
Nikita 45ac7c1d9e
ZScript DAP Debug server (#3009)
* Add STL-standard type traits and functions to TMap to enable for loop iteration

* add third-party range-map library

I have e-mailed the author for clarifcation on the license, will update this when they respond

* vcpkg: Add cppdap and eventpp libraries, update baseline

* DAP implementation

* Add `FileSystem::FileHash()` to get the CRC32 hash

* add `starting_offset` param to `VMDisasm()` for debugger disassembly view

Defaults to `0`, should not change output if it's not set

* Add `VMFrameStack::HasFrames()` to prevent assertions when inspecting in the debugger

* Add `PC` field to VMFrame, ensure that it is updated whenever vm increments/decrements the pc

Does not change alignment, the offsets used in VMFrame still work
We need this for the debugger because we otherwise have no way to get the pc; it was a local in `ExecScriptFunc()`

* `ZCCCompiler::CreateClassTypes()`: ensure SourceLumpName is set for classes derived from non-native classes

* start debug server in d_main, add `vm_debug` cvars and `-debug` CLI arg

* Add documentation for `vm_debug` cvars

* vm_exec: Add debugger hooks for instruction execution events

* c_console: Add debugger hooks for logging events in `PrintString`

* add `.cache/` to gitignore

* vendor cppdap on main @ 6464cd7

Patches:
removed .gitmodules (submodules were thirdparty/json, thirdparty/googletest)
removed thirdparty/googletest, not needed
removed thirdparty/json/docs, thirdparty/json/test, thirdparty/json/benchmarks to prevent massive bloat

* vendor eventpp on master @ 1224dd6

* build: use internal cppdap and eventpp by default

* dap: fix Binary::GetFunctionLineRange()

* fix bug in range_map::find_ranges

* make Binary dap::Source dynamic

* cache source code upon retrieval

* refactor Binary into a class, cleanup PexCache

* fix ending session gracefully

* d_main: Stop debug server in D_Cleanup()

* Fix connecting to debugger when session already started

* cleanup unused stuff in ZScriptDebugger

* always send TerminateEvents on disconnect if initialized

* tweak color display

* Don't cache disassembly lines when scanning scripts

* Cache nodes when getting runtime state

* WIP display locals

* Fix display of static arrays

* Ensure names display in proper order

* dap: Fix struct locals display, add args display

* Support `start` parameter

* Support `filter` parameter

* remove struct unbound native data display

Practically useless for debugging zscript and didn't work properly anyway

* d_main: fix vm_jit and vm_jit not being disabled soon enough

* support breaking on abort exceptions

* dap: refactor game event emitter functions into seperate header

* dap: show native functions on stack

* dap: Remove "Native" from exception handling, simplify exception event emit

* dap: add instruction breakpoints

* dap: fix display of locals not in scope yet

* dap: Make disassembly view display invalid instructions for non-code addresses

* dap: remove dot initializers

* dap: fix local structs in scope

* dap: don't parse the non-used options in the launch/attach requests

* dap: fix local struct view

* dap: Fix displaying objects that aren't their actual types

* dap: Fix action and state handling

* dap: stack display view

* dap: fix object display view

* d_dehacked: set qualified name in addition to the printable name

* dap: fix displaying breakpoint errors when script isn't loaded

* dap: remove debug print

* dap: Display parameter names

* dap: Turn down verbosity of logging

* dap: fix disassembly view

* dap: fix performance problems with arrays

* c_console: emit event only if not PRINT_NODAPEVENT

* dap: improve logging

* dap: update upstream cppdap library to fix deadlocks on no bind

* dap: Fix ending session on client socket closed

* dap: prevent DebugServer.h from pulling in `dap` and `ZScriptDebugger.h`

* dap: fix pause event not being emitted on pause

* dap: remove eventpp emitters, way too slow

* Remove eventpp dependency

* dap: Display correct register names

* dap: Show special inits in registers

* dap: Add stack offset to VMLocalVariable

* dap: fix display of static arrays and local variables on stack vs. registers

* dap: fix displaying function pointers

* dap: tweak color display

* dap: fix scalar display < 4

* dap: add Globals display to debugger

* dap: unify methods to get vmvalue

* dap: rename free method to freeValue to avoid running afoul of macro defs

* fix windows builds

* fix compile on linux

* cleanup

* Fix display of function breakpoints

* dap: Don't send back binary files

* dap: include sbarinfo in script types (no debug support for anything but zscript yet, this is just for returning source info)

* dap: don't show ending session message unless initialized

* fix erroneous commit

* dap: handle evaluate requests

* Fix getting bitfield values

* Add CVars Scope and evaluation

* add running console commands from repl

* dap: disable commands via repl for now

* fix loading functions DECORATE scripts

* Add source information to Dehacked VM functions, add debugging support

* dap: cleanup

* fix resolving archive paths

* don't send source back on native stack frames

* handle `modules` request

* cleanup

* allow evaluating cvars on hover

* fix oob bpinfos

* fix restarting the game blowing out the debug server

* dap: process input events while paused to prevent deadlocks

* fix getting local state

* dap: fix LocalState alignment

* dap: fix DumpStateHelper

* update cppdap protocol version to 1.68.0

* remove cppdap from vcpkg deps

We can't use the upstream version anyway because the maintainers are not merging our patches

* dap: make named variable nodes derive from the same class

* dap: make cvar scope available in native stack frames

* handle local variables with conflicting names

* add I_GetWindowEvent() to win32 to only process window events when debugging is paused

* dap: fix evaluate

* dap: fix display of `out` variables
2025-07-18 00:01:18 -03:00
.devcontainer Added GitHub CodeSpaces development environment. 2023-01-24 07:19:45 -05:00
.github - update CI deps to temporary archives until next release 2025-07-15 18:27:21 -04:00
bin/windows - update zmusic 2025-07-15 17:18:10 -04:00
cmake - add linux build script 2024-01-31 18:50:36 -05:00
docs ZScript DAP Debug server (#3009) 2025-07-18 00:01:18 -03:00
fm_banks Updated the WOPN banks collection 2023-01-02 08:19:11 +01:00
libraries ZScript DAP Debug server (#3009) 2025-07-18 00:01:18 -03:00
soundfont - update soundfont 2023-09-26 05:56:22 -04:00
specs Lightmap parsing update 2025-06-12 19:28:23 -03:00
src ZScript DAP Debug server (#3009) 2025-07-18 00:01:18 -03:00
tools Fixed conflicting int defs under solaris 2025-06-24 21:22:55 -03:00
unused - move appimage workflow to unused/ 2024-11-12 06:34:26 -05:00
wadsrc Expose CloseDialog 2025-07-17 23:28:10 -03:00
wadsrc_bm - removed obsolete CMake version requirements. 2023-09-03 09:04:17 +02:00
wadsrc_extra - language update 2025-02-22 12:03:07 -05:00
wadsrc_lights fix gldefs and decaldef being inverted 2025-05-06 22:10:28 -03:00
wadsrc_widepix - removed obsolete CMake version requirements. 2023-09-03 09:04:17 +02:00
.gitattributes - fix icon in .gitattributes, it must always be checked out as binary 2021-09-21 11:52:36 -04:00
.gitignore ZScript DAP Debug server (#3009) 2025-07-18 00:01:18 -03:00
AppImageBuilder.yml - add recipe files for appimagebuilder 2023-08-03 13:21:20 -04:00
auto-setup-linux.sh - add linux build script 2024-01-31 18:50:36 -05:00
auto-setup-windows-arm.cmd - add arm setup cross compiler (requires x64 precompiled version in build/) 2024-01-08 08:19:52 -05:00
auto-setup-windows.cmd - update copyright in windows build script 2024-01-31 19:10:32 -05:00
CMakeLists.txt ZScript DAP Debug server (#3009) 2025-07-18 00:01:18 -03:00
LICENSE - add LICENSE file for GitHub's info displays 2018-07-21 07:03:52 -04:00
options.checklist - sprite lightlevel cleanup and fixes. 2022-06-01 08:37:13 +02:00
README.md Update README.md 2025-02-28 02:38:42 -05:00
vcpkg.json ZScript DAP Debug server (#3009) 2025-07-18 00:01:18 -03:00

Welcome to GZDoom!

Continuous Integration

GZDoom is a modder-friendly OpenGL and Vulkan source port based on the DOOM engine

Copyright (c) 1998-2025 ZDoom + GZDoom teams, and contributors

Doom Source (c) 1997 id Software, Raven Software, and contributors

Please see license files for individual contributor licenses

Special thanks to Coraline of the EDGE team for allowing us to use her README.md as a template for this one.

Licensed under the GPL v3

https://www.gnu.org/licenses/quick-guide-gplv3.en.html

How to build GZDoom

To build GZDoom, please see the wiki and see the "Programmer's Corner" on the bottom-right corner of the page to build for your platform.

Resources