How do you use `help` when write your code

Chris Angelico rosuav at gmail.com
Mon Jul 7 07:36:15 EDT 2014


On Mon, Jul 7, 2014 at 9:22 PM, Roy Smith <roy at panix.com> wrote:
> In article <mailman.11570.1404702375.18130.python-list at python.org>,
>  Chris Angelico <rosuav at 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



More information about the Python-list mailing list