- Talk: C++ Ranges – Will Watts
- Demo: MadExcept – Paul Woodhams
- Nugget: DebugView – Adam Brett
- Nugget: Logging from multiple threads without affecting performance – David Capps
- Nugget: Tracking down memory leaks – David Capps
- Nugget: EurekaLog – Dave Martel
- Nugget: cnDebugger – Jason Chapman
Will presented on C++ Ranges. Giving a good history of C++ with references to Alexander Stepanov, and Andrei Alexandrescu. Then demonstrated “loopless code” and the strong arguments for why this is a powerful coding paradigm. He referenced Eric Niebler’s work a lot, and suggested we all watch a video on YouTube (Link available in the members group)
We then had a basket of code nuggets on “Debugging Tools and Tricks”.
Paul presented on madExcept. A commercial product which integrates the Delphi IDE and can then be compiled into your EXE, allowing emailing and uploading of bug reports to be triggered by exceptions and hangs in your programs. He demonstrated powerful customisations, including the ability to attach user-feedback, screen-shots and other files to the email / upload when it is sent.
David showed his company’s error logging solution. Key features included a fairly simple record structure to hold details of the error, passing these into a Queue list-object, and then having a dedicated thread in the application to manage saving the resulting data without interrupting the flow of the application.
He also showed how he had tracked down an actual bug in his company’s program and at the same time demonstrated some useful debugging tips. For example the fact that in Windows Task Manager you can right-click on any Process and select “Create Dump File”, which saves a full image of the whole program’s contents in memory to disk.
Adam presented a short nugget on using SysInternals free DebugView program to surface OutputDebugString data from your application, and how this can help to track down the location of bugs. The downside is having to write calls to OutputDebugString into your programs, but these are not intensive, and have the advantage of appearing in the messages window of the IDE while you are debugging, so they are useful even during normal coding.
Dave demonstrated Eurekalog. A tool which was fairly similar in price and features to MadExcept. Dave demonstrated that it could be used to upload bug reports to on-line bug tracking systems such as BugZilla and FogBugz and also demonstrated a utility to view the bug reports and jump straight from the report to the line of code where the bug occurred. Having a chance to see how BugZilla (a free, open source, browser-based bug-tracking solution) worked was also really interesting.
Jason presented cnDebug – cnDebug is part of cnWizards, which is created by cnPack. This is a free, open source library that can be added to the Delphi IDE which adds various code libraries and components that are useful. cnDebugger is basically “OutputDebugString on steroids”, the object includes a whole set of methods to pass data out of your executable to the cnDebugView program, where it can be viewed and inspected while the program is running. As well as showing a list of the messages sent from your executable, cnDebugView also includes filters that can be set on various fields in the exported messages, and capability to show summaries such as counts of messages, making it easier to track down issues in long streams of messages.
Further information and links for all the talks are available in the Members Group