I tried using it to debug a real bug, but there are some missing features that I needed in the watch window:
- being able to type an expression that cast a value/pointer
---- e.g. ( Vec2* ) bytes
- pointer arithmetic
---- e.g. ( Vec2* ) ( ( u32* ) bytes + 1 )
- specifying the number of elements to display (pointer or array)
---- e.g. vec2Array, 15
- I'm using an azerty keyboard layout (fr_be
), dead keys don't seem to work, I can't input a '[' ( Alt Gr + '^' ) or ']' ( Alt Gr + '$' ). If I switch the layout to qwerty they work.
If I can suggest something: if you pass WM_KEYUP, WM_KEYDOWN, WM_SYSKEYUP, WM_SYSKEYDOWN messages to TranslateMessage after you handle them (so you can still handle them in any way you want), windows will generate a WM_CHAR message that will contain the character typed by the user and you don't have to worry about the keyboard layout for text input. The character is encoded in UTF-16 so you may need to convert it to UTF-8 or codepoint which is really easy to do, for instance the first 127 character in UTF-16 and UTF-8 are the same in ASCII.
Thank you for the customisation layer. A few remarks:
- you should add command to copy the dll at the right place when the build is successful;
- the default dll has a font problem: "Failed to load the font specified in the module. Debugger will use its internal font". I got the same error with the default font in compiled dll. This path for the font fixed it for me (I'm on windows 7)
file_viewer_config.font = "C:\\Windows\\Fonts\\consola.ttf"; // Full path, no 's' at the end of consola.
(after typing this I realized that there was a font folder with consolas.ttf and the problem is probably because I'm launching cdbg using a batch file from another directory).
- You can use GetKeyNameText
to get a string of the name of a key (in the language of the keyboard layout) to display the keys in the menus.
- This one you may not need to fix, I'm using VS2012 and it doesn't support C99, so I got a few errors:
---- stdbool.h doesn't exists in C89;
---- bool, true, false are not defined;
---- There are some variable declarations in the middle of scopes or inside the for loop parenthesis.