ipythonとpdbの組み合わせで人生を楽にする方法

予期しない例外が起きた場合:

In [55]: scatter(data[:, 0], data[:, 1], marker=".")
---------------------------------------------------------------------------
(中略)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axes.pyc in scatter(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, faceted, verts, **kwargs)
   5736             sym = syms.get(marker)
   5737             if sym is None and verts is None:
-> 5738                 raise ValueError('Unknown marker symbol to scatter')
   5739             numsides, rotation, symstyle = syms[marker]
   5740 

ValueError: Unknown marker symbol to scatter

なんだよどこに使えるシンボルの一覧があるんだよこれ(matplotlib.lines.Line2D.set_marker)じゃないのかよと怒る前に焦らず騒がずpdb

In [56]: pdb
Automatic pdb calling has been turned ON

In [57]: scatter(data[:, 0], data[:, 1], marker=".")
> /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axes.py(5738)scatter()
   5737             if sym is None and verts is None:
-> 5738                 raise ValueError('Unknown marker symbol to scatter')
   5739             numsides, rotation, symstyle = syms[marker]

ipdb> syms
{'x': (4, 0.7853981633974483, 2), '^': (3, 0, 0), 'd': (4, 0, 0), 'h': (6, 0, 0), '+': (4, 0, 2), 'o': (0, 0, 3), 'p': (5, 0, 0), 's': (4, 0.7853981633974483, 0), 'v': (3, 3.141592653589793, 0), '8': (8, 0, 0), '<': (3, 4.71238898038469, 0), '>': (3, 1.5707963267948966, 0)}

うーん、少ない。三角形を4種類も入れなくていいから点を入れといて欲しかったなぁ。

ちなみにpdbモードはqで抜けられて、もう一回pdbって打つとAuto-pdbはOFFになる。

さらにちなみに「なんだよどこに使えるシンボルの一覧があるんだよ」に関してはhelp(scatter)したら書いてあったゴメンナサイ。