[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Displaying Buffered Debug Data" vod_platform=youtube id=2bQ6mL3yNh0 annotator=Miblo] [0:53][Adjust the chair][quote 279] [1:46][Recap where we left off] [3:37][handmade_debug.cpp: Implement the various DebugEvents] [10:20][handmade_debug.cpp: Introduce EventsMatch] [11:42][handmade_platform.h: Massage debug_event] [13:20][handmade_platform.h: Replace RecordDebugEventCommon with RecordDebugEvent] [14:05][handmade_debug.cpp: Massage these DebugEvents] [14:40][handmade_debug.cpp: Make DeallocateOpenDebugBlock take **FirstOpenBlock] [17:49][handmade_debug.cpp: Fix compile errors] [19:05][Run the game and see the same results] [19:25][handmade_debug_variables.h: Generate DEBUGAddVariables dynamically] [27:04][handmade_debug.cpp: Implement the variable adding stuff] [29:45][handmade_debug.cpp: Make DEBUGBeginVariableGroup take the DebugState] [31:03][handmade_debug.cpp: Rename DEBUGAddVariable to CollateCreateVariable and DEBUGBeginVariableGroup to CollateCreateVariableGroup] [32:06][handmade_debug.cpp: Introduce CollateAddVariableGroup] [33:02][handmade_debug.cpp: Bring DEBUGAddRootGroup into play] [34:15][handmade_debug.cpp: Massage DebugEvent_OpenDataBlock] [37:30]["Everyone is happy and smiling" (quote 280)] [37:56][handmade_debug.cpp: Introduce CollateCreateGroupedVariable] [39:47][Debugger: See what's getting passed to the DebugBlock] [41:55][handmade_debug.cpp: Correct typo] [42:20][Run the game and see that we're working] [42:44][handmade_debug.cpp: Provide a way to view the RootGroup per frame] [44:15][handmade_debug.cpp: Make DEBUGDrawMainMenu display everything expanded by default] [45:21][handmade_debug.cpp: Set debug_variable *Group = Tree->Group and conditionally override the Group] [48:15][Run the game and see what it's printing] [48:55][handmade_debug.cpp: Investigate why we're printing out so many RootGroups] [51:30][Debugger: Step into FirstOpenDataBlock to determine that our Events aren't matching and why] [53:24][handmade_platform.h: Consider removing the concept of EventsMatch] [56:16][Debugger: Run and find that we hit a first-chance exception when we wrap] [56:52][Debugger: Inspect the RootGroup] [58:44][Debugger: Step through RestartCollation] [59:58][handmade_debug.cpp: Test for HackyGroup] [1:00:58][handmade_debug.cpp: Provide the ability in CollateDebugRecords to break at frame 31] [1:01:54][Debugger: Step into CollateDebugRecords and inspect the data] [1:03:51][handmade_platform.h: Determine that we wrap the array when we hit frame 32] [1:05:35][handmade_debug.cpp: Make RestartCollation happen one frame earlier] [1:06:06][Run the game and see that the entity picker is working] [1:06:44][Q&A][:speech] [1:08:29][@Zamar037][We've been on the debug code for quite a while. How much longer do you think it will take before we're finished?] [1:11:33][@Stephenlast][Do you ever use data breakpoints? I find them helpful when some value is changing somewhere but you're not sure where] [1:13:19][@JamesWidman][Does the design of this debug system differ significantly from the debug systems you've worked on for other games?] [1:13:43][@ChronalDragon][(Not SUPER on topic, feel free to skip): How do you treat GL handles in your own code? Are they handled by the asset system or by something else?] [1:14:30][Call it][:speech] [1:14:42][Announcement: F2P discussion between Casey and Shawn McGrath after tomorrow's stream][:speech] [/video]