背景
普段プログラミングするときは、コマンドラインで完結するのが好きで、基本的にzshとneovimを使っているのですが、デバッグする際に使用するGDBに苦手意識があり、できればGUIでデバッグしたいという気持ちがありました(コマンドを覚えるのが面倒なので)。近年では、VSCodeというMS製の拡張性に優れた素晴らしいテキストエディタにはデバッガ連携機能もあるので、これを使ってデバッグをしたいのですが、こんどはプロジェクトごとに設定ファイル(launch.json)を作成する必要があり、大きなプロジェクトならともかく、やっぱり気軽さに書ける感じがしてモヤモヤしていました。
そんな中で偶然Twitterで見かけたツールがdbgeeでした。 これは、コマンドラインで実行したプロセスに簡単にデバッガでattachすることのできるツールでして、
- デバッグ用の設定ファイルが不要(vscodeのlaunch.jsonみたいな)
- 引数や標準入出力の設定が簡単
個人的に役に立ちそうだと思ったユースケースとしては、
- 競プロのように標準入力のリダイレクトを多用する事例(通常gdbの場合、
gdb
→run < in_1.txt
みたいに2コマンド必要なのに対し、1コマンドで完結する) - 書き殴りのテストコードをさくっとVSCodeでデバッグしたくなった場合
詰まったポイント
c++のプログラムにattachできない
起動したプロセスにattachする際にpermissionがなくて失敗する問題があった。 原因としては、Ubuntu環境ではデフォルトでリモートプロセスにattachできない設定らしい。 解決としては、このサイトが参考になった。 linux – gdbのattachについて – スタック・オーバーフローsudo su
# 一時的に設定したい場合
echo 0 >| /proc/sys/kernel/yama/ptrace_scope
# 恒久的に設定したい場合
# /etc/sysctl.d/10-ptrace.conf の最終行をkernel.yama.ptrace_scope = 1に設定
pythonのプログラムにattachできない(未解決)
原因は不明だが、shebang(最初の行)の書き方で、できたりできなかったり できる#!/usr/bin/env python3
できない #!/usr/bin/python3