生じた問題
VScodeでのデバッグ中、設定したブレークポイントで止まらない
とあるRubyファイルをVScodeでデバッグしようとしたところ、設定したブレークポイントで止まってくれずスルーしてしまう問題が発生。
ファイルの実行自体は出来るが、標準入力を入れるとすぐに実行結果が返ってしまう状態に。
(実行デバッガ:vscode-rdbg)
【結論】解決法
実行ファイル名、その実行ファイルを含むディレクトリ名(というよりパス)に全角文字を含まないようにする
この問題が起こりそうなタイミング
・上階層のディレクトリを日本語で管理しており、その下階層のファイルをデバッグ実行するとき
・今までメモのように日本語で管理していたプログラムファイルをデバッグ実行するとき
経緯
先日アルゴリズムの学習をしている際、メモ扱いしていた「二分探索2-6」という名前のファイル(以下ファイルA)をvscode-rdbgでデバッグしたときに何故か設定したブレークポイントを通りぬけてしまう謎の現象が起こった。
他のRubyファイルはちゃんと止まるのに何故...と悩みながら試行錯誤。
初めはプログラム内容が影響しているのかと考え、ちゃんとブレイクできるファイル(以下ファイルB)をファイルAの内容に少しずつ近づけていった。
しかしまるっきり同じ内容になってもファイルAとファイルBのブレイクの可不可が変わらず。
この2ファイルの差を考えた際にファイル名やパスに全角文字(日本語)を含んでいることに気づき、Aのファイル名をアルファベットに、Bのファイルをひらがななど付け加えるとブレイクの可不可が入れ替わった。
ここでファイル名やパスに全角文字(日本語)を含んでいるとブレイク出来ないことに気づく。
終わりに
全角文字ファイル名が良くないのは知っていたが、実行自体は出来るし、見た目の管理もしやすいので実行時エラーが出てからで大丈夫だろうと思っていた。しかし分かりづらい形で不具合が出てしまい、思わぬ時間を食ってしまった。(PCのユーザー名を日本語にしてユーザーディレクトリ名が全角文字の人はちゃんとブレークポイントで止まれるのだろうか...)
日本語含むと何故根本的にダメなのか、他デバッガでの比較、どこまで現象を再現できるか、等の書かれてる厳密性の高い記事ではありませんが、Web検索しても当該事象についての記事が無いような気がしたので自分で記事にしてみました。
全角文字含みが問題の必要十分条件ではないと思いますが条件の一つではあるとは思います。
デバッグ中にブレークポイントが止まらない事象が起こった際(特にvscode-rdbg使用時)にはファイル名や上層のディレクトリ名を一度チェックしてみてください。
余談
本記事の内容とは外れますが、rdbg実行中にステップのボタンが押せない状態で止まったときは 標準入力のステップに入ってrdbgデフォルト設定により止まった可能性があります。
標準入力を受付させるためにはlaunch.jsonファイルのconfigulationsに "useTerminal": true を付け加えるとターミナルで入力を受け付けてくれます。