pythonの別バージョンが共存しているときpdbやpudbでデバッグするには

先日、当サイトをSSL化したんですが、その過程でpythonの別バージョンが共存する事になってしまいました。

当サイトの環境は
CentOS release 6.10で、pythonは2.7と2.6が共存しています。

ことの始まりはSSL化なんですが、それに伴ってyum updateが動かなくなってしまいした(今は動いています)。

そこで原因を特定しようと普段はまったく使っていなかったデバッガーpdbを使ってみようと思ったわけです。

pdbが動かない

いつインストールしたのか忘れてしまいましたが、私の環境ではインストール済みだったので、インストール方法については他のサイトを参考にして下さい。

さて、問題は『起動』です。

さすがにyumそのものに変更を加えるのは、怖いので、ソースコードを弄らない方法で使う事にしました。

方法は簡単でpythonを起動する時に、-m オプションを付けて pdbを指定するだけです。

$ python -m pdb [デバッグ対象ファイル]

私の場合はyum走らせてみたかったので、

$ python -m pdb yum check

checkはyumへの引数です。付けた理由は、「このオプションなら、途中で強制終了させても、悪影響がないだろう」と思ったからです。何の根拠もありませんので、マネする時は自己責任で!

さて・・・エラーとなって動きません。

エラー・メッセージを読むと、「yumが見つからないよ」みたいな内容だったので、yumの位置を探しました。

$ which yum

を実行して、yumの位置を確かめてから再度実行すると、今度は「rpmが見つからない」と言っています。

ここで、かなりのパニックになりました。だってyumからrpmが見つからなかったら、yumが動くわけないじゃないですか・・・

そこで初めて別バージョンのpythonが起動していることに気づき

$ which python

で確認したところSSL化の時にインストールした2.7が動いている事がわかりました。

最終的に

$ /usr/bin/python -m pdb /usr/bin/yum check

で動きました。

pudbが動かない

最初は、気を良くしてpdbを使っていたのですが・・・やっぱりCUIって使いづらい・・・

「もう少しマシなデバッガってないのかな?」と思って探してみたら、ありました。

pudbってヤツです。

早速インストールです。

$ pip install pudb

これだけですが、インストール方法に関しては他のサイトに譲ります。

さて、問題は『起動です』(笑)

最初はテキトウなpythonで書かれたファイルを起動してみました。

$ python -m pudb test.py

pdbの時と同じで -m オプションの後のpdbをpudbに変えるだけです。怖かったのでいきなりyumが動かしません。

ここで設定画面が出て来ました。

他のサイトでインストール方法を解説している方がまったく触れていませんが、私はハマったので、書いておきます。

ここから、どうやって抜ければ良いのかわからなくなりました。

下矢印キーでどんどん下に移動して行き、EnterやSpaceキーで設定が変えられる事まではわかったのですが、ずっと下矢印キーを押し続けても一向に右上にある < OK > か < Cancel > に辿り着けません。

答えは右矢印キーでした。

わかってしまえば、バカバカしい限りですが、頭がCUIモードになっていて気づけませんでした。

ちなみにこの設定画面をもう一度開きたい時は【Ctrl + P】です。

終了はq キー を押せば良いのですが、終了しても、GUIの画面が残ってしまいますので、【Ctrl + L】を押さないと画面がクリアされません(私のメモリ環境が貧弱なのが原因で、再現性があるのかわかりませんが・・・)。

pudbでyumが動かない

さて、いよいよyumのデバッグです。

ところが、これが困った事になりました。

pdbの時と同じように、

$ /usr/bin/python -m pudb yum check

とやって見ましたが・・・動きません。

python 2.6からはpudbモジュールにアクセス出来ないようです。

それならと

$ python -m pudb yum check

今度はrpmにアクセスできません。

このような状態になっているんだと思います。

最終的にパスを通す事で解決できました。

# export PYTHONPATH=[環境によって異なります]

PYTHONPATHにrpmへのパスとyumへのパスを通しました。2箇所のパスを指定するには :(コロン) で繋げます。

やっぱりgdbとは格段に使い勝手が違います。全体のコードが見渡せるのと、NキーとSキーだけでステップ実行してくれると快適です。

linuxカーネルのコードが読めるようになりたい| 超初心者が何から始めるか2?

linuxのカーネルのコードが読めるようになりたいけど、超初心者が一体何から始めれば良いのか?

一番シンプルな答えは「コードを読む前に本を読め!」だ。

オススメの本は、1000ページ以上あるけど・・・

ちと高いが、翻訳本も出ている。


これは秘密だが【understanding the linux kernel, 3rd edition pdf】で検索すると無料で読める。

linuxカーネルのコードが読めるようになりたい| 超初心者が何から始めるか?1

いつかlinuxのカーネルのソースコードが読めるようになりたいと思いつつも・・・
初心者過ぎて、とにかくハードルが高すぎて、もう何から手を付けたらよいかわからない・・・

とりあえずvimって知ってる?

知ってれば良し!
また使えれば、なお良し!

知らない人は、まず、そこからだ。調べよう。

いざという時、vimしか使えないという状況がある。

しかも、かなりクリティカルかつスピーディーな対応が要求される場面でだ。

コメントの色を見やすい色に変えてみよう

コードを読むに当たって、とりあえずプログラムは読めないので(笑)・・・

まずはコメントを読みやすく設定しよう。

デフォルトのコメント色の青色が濃すぎて、目を凝らさないと読みづらい(自分だけですか?)。

手順

まずは[何らかのファイル]をvimで開く。

# vim [何らかのファイル]

vimの下部のペインを見ながら以下を入力してリターン

:so $VIMRUNTIME/syntax/colortest.vim

※ どんな色が使用可能か確認して、希望の色の名前をコピーする。

:q
で抜けて、vimを終了させる。

.vimrcに以下のコマンドを追記する

# vim .vimrc



hi Comment ctermfg=[colorName]


※ [colorName]を希望の色に変更する。

まとめ

遠回りのようだけど、こういうチマチマした事の積み重ねを信じる。