It has been a while since I posted something here, the reason is that a series of unfortunate events occurred in my life which prevented me from programming at all. Only last October I returned back to my normal life, and first thing that I did was firing up emacs and checking out state of the debugger. First impulse was to burn everything to the ground and start over, but lucky me that a more rational thought followed it. Starting over will not change anything, and it is better to work on the existing code. After looking around I decided that it is time to get rid of the DIA library (Microsoft's COM disaster to read PDB). At the start I was not even sure that I will be able to write a replacement for that, however as time went by I found that there is nothing hard about it. I limited parser to a certain subset of symbols, which helped a lot because PDB has a lot of legacy stuff in it. Removing the DIA also forced me to write a stack unwinder. It is always a good thing to remove a black box out of a project. In this case it means that we are no longer tied to the windows and it will be much easier to port debugger to the Linux later.
Next on the list was to improve UI rendering. Before I had a loop that would redraws screen all the time, like you would see in a game and in context of a game this is totally fine, but it is not when you have mostly an idle UI. New system will only re-render regions that have changed, which will help to save a lot of CPU work. And while I was changing UI code a decision was made to improve the font rendering too. Debugger was using FreeType to render glyphs and I already knew that it is possible to tweak it to output LCD glyphs for sub-pixel text rendering, and the trick here was to make it work with OpenGL. First, I tried to look around the internet for some pointers, but after an hour of searching I gave up and did it myself. I will write an article about sub-pixel text rendering with FreeType and OpenGL soon, because in my opinion a lot of people will benefit from this knowledge, and I hope 4coder will implement it so I can finally ditch emacs :)
This concludes list of all major changes that were done, and I hope that you can help me improve debugger by trying it out yourself. Please leave your feedback in comments or just email me at [email protected]
. I also put a little demo video together on youtube
and you can download debugger here