The GUI version of the tool accepts the same command line arguments as the console mode version that I wrote about here. It also accepts an additional argument of -launch which, when used with -exe will cause the target process to be started automatically. Without -launch the command line arguments simply allow you to "automatically fill in" some of the required input data.
The GUI is fairly simple.
Simply browse for, or type in, a target process, select how you want to adjust the results of its calls to GetTickCount() and hit the "Launch" button.
Once you're running a process under the tool you'll see the "session" listed in the sessions list. A session is a collection of data from one or more processes under test. Each time you hit the "Launch" button you create a new session. Viewing the session data shows you the processes that were monitored during the session. If the process that you launched didn't launch any child processes then this dialog will simply list one process. The multiple-process support isn't especially useful for the simple TickShifter tool (but then it is just a minimal example of how the tools work!), it's much more useful for the Deadlock detection tool as it allows deadlock detection to operate on named kernel objects across processes rather than simply within a single process.
From the session display you can navigate to each individual process. The TickShifter GUI simply displays all of the calls that the process has made to GetTickCount() more complex tools might show a tab for each lock that's accessed by the process, another tab for each thread, another showing the overall ordering of lock access within the process, etc. The number next to each entry is the location that the call occurred at. Clicking on the location takes you to a call stack display.
And that's about it. If you come across buttons that never become enabled that's because the code isn't finished. Likewise the "namespace" removal stuff doesn't yet work; once it does it will allow you to make the call stack display easier to read by being able to specify namespaces that you'd like stripped from function names.
I quite expect that this will fail to work on your machine, but I'd like to know if it does so that I can fix it! Comments and suggestions welcome, as always.
TickShifter v0.2 can be downloaded from here. You can use the sample projects that I provided with v0.1 to see it in action.
Leave a comment