Commit graph

41 commits

Author SHA1 Message Date
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
Marcus Minhorst
61cfbee739 Updated .gitignore
Organized and add some more rules
2025-07-15 13:00:12 -04:00
Hugo Locurcio
0328eca7f0 Add crash log file to .gitignore
This prevents accidentally committing this file if you run
into a crash while working on something.
2024-04-12 07:13:15 +02:00
Christoph Oelckers
4baabf98c4 - use stb-image for JPEG decoding.
the statically provided library did not provide any advantage over it whatsoever and even libjpeg-turbo's better performance cannot really play out here so ease of use and getting rid of a dependency wins.
2023-09-03 08:34:58 +02:00
Rachael Alexanderson
f4dc16b27a - add recipe files for appimagebuilder 2023-08-03 13:21:20 -04:00
CandiceJoy
1355b9669e Added JetBrains and VSCode to gitignore
Signed-off-by: CandiceJoy <candice@candicejoy.com>
2023-02-09 21:38:52 -05:00
Christoph Oelckers
523fd0bf3a Revert "AsmJit update"
This reverts commit 747b3dfcfe.

# Conflicts:
#	libraries/asmjit/asmjit/core/compiler.h

This had to be reverted because it breaks exception handling which is a critical problem.
With the updated code any exception thrown inside code that had a JITed call stack would crash.
2019-10-07 20:34:55 +02:00
Petr Kobalicek
747b3dfcfe AsmJit update 2019-08-19 21:02:36 +02:00
Christoph Oelckers
6af77b25c0 - gitignore update. 2019-06-09 18:05:31 +02:00
Christoph Oelckers
072018bda2 - cleaned up .gitignore.
This still contained a lot of data from the pre-CMake build setup for Windows. None of these paths is relevant anymore.
2019-02-10 14:12:06 +01:00
Christoph Oelckers
cf590d73e4 - extended state caller check to work on CustomInventory items as well
Since CallStateChain is a public member in CustomInventory we cannot really be sure that the given state is valid so it needs checking as well.
2018-11-15 09:24:17 +01:00
Christoph Oelckers
ad7aaa8f2a - specify fragment output locations in the shader source.
OpenGL has been supporting this since version 3.3 and Vulkan requires it so it's the way to go.
2018-06-12 23:52:33 +02:00
Christoph Oelckers
9bf11155eb Ignore .DS_Store for macOS 2018-02-22 08:40:32 +01:00
Christoph Oelckers
6389b6b914 - UMAPINFO parser, including some convenience additions to FScanner.
Not tested yet!
2017-11-19 23:04:15 +01:00
Christoph Oelckers
21f089c148 - removed redundant content from wadsrc_extra, i.e. all files which were identical with the ones in wadsrc. 2017-09-30 08:02:37 +02:00
Magnus Norddahl
e9e7839133 Create drawergen tool 2016-11-28 17:31:56 +01:00
Magnus Norddahl
8765cf2016 Change Windows build to use a precompiled version of LLVM 2016-10-01 06:51:55 +02:00
Christoph Oelckers
e3c06e3df7 Merge commit '165d26baa1'
# Conflicts:
#	bzip2/bzip2.vcproj
#	game-music-emu/game-music-emu.vcproj
#	gdtoa/gdtoa.vcproj
#	jpeg-6b/jpeg-6b.vcproj
#	src/p_spec.cpp
#	src/r_defs.h
#	tools/fixrtext/fixrtext.vcproj
#	tools/lemon/lemon.vcproj
#	tools/updaterevision/updaterevision.vcproj
#	tools/zipdir/zipdir.vcproj
#	wadsrc/static/xlat/eternity.txt
#	wadsrc/wadsrc.vcproj
#	zlib/zlib.vcproj
2016-03-01 17:23:35 +01:00
Randy Heit
8b5137461f Add a couple more directories to .gitignore 2016-03-01 09:44:53 -06:00
Christoph Oelckers
56202c49f1 Merge branch 'master' of c:\programming\doom-dev\zdoom
# Conflicts:
#	.gitignore
2016-02-16 21:02:13 +01:00
Christoph Oelckers
6adb069506 - rewrote p_local.h so that it doesn't pull in the entire bunch of headers.
This was to resolve some circular dependencies with the portal code.
The most notable changees:

 * FTextureID was moved from textures.h to doomtype.h because it is frequently needed in files that don't want to do anything with actual textures.
 * split off the parts from p_maputl into a separate header.
 * consolidated all blockmap related data into p_blockmap.h
 * split off the polyobject parts into po_man.h
2016-02-15 02:14:34 +01:00
Christoph Oelckers
4d2a52418f - added an errorlog option.
This cuts down on as much message noise as possible, outputs everything to a file specified as a parameter and then quits immediately, allowing this to run from a batch that's supposed to check a larger list of files for errors.
Multiple outputs get appended if the file already exists.
2016-02-09 14:20:49 +01:00
Christoph Oelckers
dda73b531c Merge branch 'master' of https://github.com/rheit/zdoom
# Conflicts:
#	src/CMakeLists.txt
#	src/p_setup.cpp
#	src/r_defs.h
#	src/version.h

This only updates to a compileable state. The new portals are not yet functional in the hardware renderer because they require some refactoring in the data management first.
2016-02-05 12:31:41 +01:00
Christopher Bruns
10088544c3 Merge branch 'master' of https://github.com/coelckers/gzdoom into stereo3d
Conflicts:
	src/win32/i_system.cpp
2015-12-09 18:34:20 -05:00
Christopher Bruns
d603999ee3 Revert stereo3d-unrelated changes to .gitignore and .gitattributes 2015-10-30 21:57:23 -04:00
Christopher Bruns
0874455faf Initial implementation of five 3D modes -- some bugs remain. 2015-10-30 20:51:35 -04:00
Christoph Oelckers
0f425c4c3c Merge branch 'master' of https://github.com/rheit/zdoom
Conflicts:
	wadsrc/static/compatibility.txt
2015-09-15 12:53:28 +02:00
Christoph Oelckers
97947f9e10 Merge branch 'master' of https://github.com/rheit/zdoom
Conflicts:
	dumb/vc6/dumb_static/dumb_static.vcproj
	wadsrc/static/compatibility.txt
2015-03-15 11:42:59 +01:00
Randy Heit
2d87eb0ba2 Merge branch 'master' into gonesolong
Conflicts:
	src/CMakeLists.txt
	src/actor.h
	src/g_heretic/a_hereticmisc.cpp
	src/g_heretic/a_hereticweaps.cpp
	src/g_heretic/a_ironlich.cpp
	src/info.h
	src/namedef.h
	src/p_buildmap.cpp
	src/p_enemy.cpp
	src/p_map.cpp
	src/p_mobj.cpp
	src/thingdef/thingdef_codeptr.cpp
	zdoom.vcproj
2014-12-20 19:13:14 -06:00
Christoph Oelckers
3e318e4555 Merge branch 'master' of https://github.com/rheit/zdoom
Conflicts:
	.gitignore
	src/CMakeLists.txt
2014-02-16 21:08:44 +01:00
Randy Heit
7b63ee8ded Add more stuff to .gitignore 2014-01-21 19:48:46 -06:00
Christoph Oelckers
45070114e8 Merge branch 'master' of https://github.com/rheit/zdoom
Conflicts:
	.gitignore
	CMakeLists.txt
2013-11-28 12:44:27 +01:00
Christoph Oelckers
7cb70f60b3 - removed duplicate #define warning in fmodsound.cpp.
- commented out output of Cr0NpxState for floating point state because this variable was renamed in most recent Windows headers.
- added CMAKE option to generate assembly output for release builds.
- added my CMake-based project directory to .gitignore.
2013-11-28 11:03:19 +01:00
Christoph Oelckers
41856905be - CMake: The GL renderer requires fast Floating point math or performance will go down the drain.
- added CMake 'build' directory to .gitignore.
2013-10-09 13:06:18 +02:00
Randy Heit
78196063da - Add generated zcc-parse files to .gitignore 2013-06-25 19:29:49 -05:00
Christoph Oelckers
93e040b322 Merge branch 'master' of https://github.com/rheit/zdoom 2013-06-25 09:23:11 +02:00
Randy Heit
1032170ccd - Add .aps files to .gitignore 2013-06-24 20:53:49 -05:00
Christoph Oelckers
c0e634b0ac - updated .gitignore to ignore all compile generated files. 2013-06-23 17:38:51 -05:00
Christoph Oelckers
4500145ef9 - forgot to add wadsrc_lights and wadsrc_bm projects to solution. 2013-06-23 14:36:26 +02:00
Christoph Oelckers
d8abeceef9 - updated .gitignore to ignore all compile generated files. 2013-06-23 13:31:06 +02:00
Alex Mayfield
742ecd324b Convert svn:ignore to .gitignore. 2013-06-13 21:24:08 -04:00