Debug your programs like they're closed source
jvns.ca
jvns.ca
Wow. Was the project successful? Where can we read more about it? Was it a perfect implementation - all the images in the right places pixel by pixel?
Source is at https://github.com/ctm/executor
I think the OP is of by two OS versions, but I didn't work at ARDI, so I may be wrong.
Whoa, Cliff open-sourced Executor. I didn't know that.
As a business? No. As a hack? It was compatible with quite a bit of software and with syn68k on a Pentium whatever of the time, it was faster than any Mac.
Coincidentally, I prefer to use an Asm-level debugger (WinDbg, OllyDbg) whenever I need to use one - which for debugging something I wrote, is not very often. Maybe it has to do with the fact that I started with Asm and disassembling other programs, so it's relatively straightforward to map between source code and the instructions the compiler generated. This also helped with figuring out a very subtle compiler bug - I know that they're quite rare, but when they do occur, they tend to be extremely difficult to figure out otherwise.
As someone who seldom leaves higher-abstraction languages, I've had some fun using Cheat Engine against old single-player games. I remember being pretty proud of the first time I managed to replace a few instructions with a larger set sitting in a code-cave. (Nothing impressive for those who learned assembly in a structured way, of course.)
For those on OSX, `dtruss` seems to work in more-or-less the same way.
sudo dtruss -t open ssh whatever.com
More info on stack overflow: http://stackoverflow.com/questions/1925978/equivalent-of-str...dtruss is a DTrace script. See http://dtrace.org/blogs/brendan/2011/10/10/top-10-dtrace-scr... for more useful DTrace scripts.
A few procmon features you probably weren't aware of:
- It can log your boot process (by loading a driver very early in the boot process)
- It stores a lot of details about every line of output, including a stack trace (!), accessible by doubleclicking
Most systems should have it setup to run daily out of the box.
ps: Windows really isn't sleepy, a lot happen all the time it's a bit scary. I don't know how other OSes are behaving when idleing though.
I am very impressed by lttng myself:
Another awesome story: http://lwn.net/1999/0121/a/mec.html
I used to make guess when I debug my day to day problem. Say for example, when I run selenium, and the browser doesn't open up:
1. Does the jar is valid? 2. Safari has selenium plugin? 3. Have custom installation rather than default installation location?
Then the smart you make the guess, the smart you can solve the problem.
Its about removing the un-wanted space ( by making smart guess ) and debugging the right space.
(it should be possible with XPrivacy)