2017.01.06この記事は約3分で読めます。PostgreSQLを少し触る機会があり,ソースも少し追っかけてみたい(が膨大で難しい。)と思いデバッグ環境を構築することに。ターミナルでgdbでステップ実行するのもあまり慣れていないので,Xcodeでと試した時のメモです。10.11.6Xcode8.2.1postgresql-9.5.5作成手順ソースコードジャンプまず適当に空のプロジェクトを作ります。続いてソースコードなどをインデクシングしてジャンプできるようにダミーのターゲットを作成します。Sourcesでpostgresqlのsrcフォルダ下の.cファイルを追加します。Otherで,FinderのSearchに.cと打つとCソース一式を絞り込めます。(他に良い方法あれば教えて欲しいです。Sourcesに表示されるまで少し時間がかかるかもしれません。Paths」にpostgresqlのsrc/includeディレクトリを指定します。これでソースにジャンプできるようになっているはず。続いてブレークポイントを貼ってステップ実行するための設定。Systemを選択します。続いて実行ディレクトリを指定します。SchemeでPre-actions,Post-actionsのスクリプトを指定します。installを実行しています。あとはターゲットを実行します。上手くいくとprefixで指定したディレクトリに実行ファイル等一式が生成されているはずです。続いて試しにinitdbを実行してみます。ターゲットを作ります。Schemeでデバッグビルドした実行ファイルを選択します。実行時の引数や環境変数を設定します。以上を設定の上,ブレークポイントを適当な場所に貼ってターゲットinitdbを実行してみます。指定した箇所でブレークできました!上手くいったようです。プロセスにアタッチpsqlで対話インターフェースを起動し,クエリを実行するところでブレークしてステップ実行してみます。コンソールでpsqlを実行します。続いてXcodeからプロセスにアタッチします。プロセスIDはpostgresで最新のプロセス番号になっていると思いますが,psでも確認しておきます。以下のようなプロセスが見つかると思います。idleIDが分かればXcodeでアタッチしてみます。何も起こったように見えませんが,ポーズボタンを押してプログラムの実行を中断してみます。するとデバッグコンソールに(lldb)と表示され入力待ち画面になります。1;を実行してみます。lldbからブレークポイントを張る場合は,以下のように入力します。exec_simple_query一応ブレークポイントを確認してみます。1;を実行すると,以下のようにブレークポイントで中断できました。11から、JIT機能が追加されました。理解できていないのですが、どんな感じで動くのか、まずは触ってみたいと思います。導入と動作確認にあたり、以下の資料を参考にさせていただきました。3.6以降のフェイルオーバー時のクライアントセッションについての検証。コメントをキャンセルメールアドレスが公開されることはありません。»タイトルとURLをコピーしました。