On Mon, Jul 7, 2014 at 9:22 PM, Roy Smith <r...@panix.com> wrote: > In article <mailman.11570.1404702375.18130.python-l...@python.org>, > Chris Angelico <ros...@gmail.com> wrote: > >> That's about it, yeah. I tend to find both strace and tcpdump rather >> too spammy for most usage, so any time I reach for those tools, it's >> usually with some tight filtering - and even that's not always >> helpful. > > Usually, when I fire up strace, it's because I'm looking for something > specific. A common use case is, "I just edited this config file, but it > doesn't seem to be having any effect". I'll do something like "strace > -e file" and grep out all the open() calls. From there, it's trivial to > verify that it is indeed reading my config file (or not). Or that > there's other config files (/usr/share/whatever) that it's reading that > I didn't even know existed, which might be overriding my own. Likewise > for which libraries it's linking against, which executables it's > running, etc.
Yep. Sometimes it's fairly easy. I was trying to figure out where rdesktop was looking for its keymaps, and rather than hunt down the source, I just straced it and watched for errors, and found that it was looking for ~/.rdesktop/keymaps, so I made that as a symlink to what I wanted. (I'm sure I could have found this somewhere in the docs, but after a small amount of searching, I didn't have any indication of where; and for this job, I needed it to be local, rather than in a root-owned directory.) That one was pretty straight-forward. The time I was trying to trace that game, though, I was trying to figure out why it was unable to save screenshots; and since the most likely cause was an incorrect path name, I couldn't search for the path. Had to negate the search - run the trace, then filter out everything that looks like the one most common line, rinse and repeat until it's silent. Then hit the screenshot key. Whoops, filtered out too much, didn't see a thing.... weaken the filters, start again. Would have liked source code for THAT one! A simple line of "write my parameters to stderr" would have done the job. At the end of the day, it's just another tool in the box. You learn to use it because there are times when it's the right one for the job. ChrisA -- https://mail.python.org/mailman/listinfo/python-list