ファイルの行番号でブレークポイントを設定することができますか

こんにちは。Amramです。

シミュレータを実施しています。

 

debugger.Breakpoint.Setは関数名或いはアドレスで、ブレークポイントを設定できますが、

ファイルの行番号でブレークポイントを設定する方法がありますか。

Parents
  • Amramこんにちは。NoMaYと申します。

    以下のように記述出来ますよ。ただ、コンパイル時/リンク時に最適化が掛かっていると、ソースファイル見えの行番号にコードが存在しないことがありますので、CS+のデバッガでコードが存在することを確認しておくか(またはコンパイラにリストファイルを生成させてリストファイルでコードが存在することを確認しておくか(それでも最適化の種類によってはリンク時にソースファイル見えの行番号にコードが存在しなくなることがあります)、あるいはむしろ最適化を無効にしておくやり方もあります。Pythonコンソールのスクリプトで最終的に何がしたいのか教えて頂くと、他にも回答出来るかも知れません。(なぜ、Pythonコンソールのスクリプトで、コーディング中にどんどん変化していくことも少なくない、そういう性質の行番号というものにブレークポイントを設定したいのでしょうか?という私からの逆質問だったりもします。)

    Condition = BreakCondition()
    Condition.Address = "TestSCCCRX.c#14"
    debugger.Breakpoint.Set(Condition)

     
    あと、複数モジュールをダウンロードしている場合には以下の記法も使えます。

    ロード・モジュール名$ファイル名#行番号

     
    [関連リンク]

    以下のオンラインドキュメントがちょっと分かり難くて理解出来ないかも知れませんが、そのような記述が出来ると推測出来る文面はあります。私は、NECエレクトロニクスという会社だった頃にリリースされていた、CS+の前世代のデバッガからのユーザですので、以下のオンラインドキュメントを読まなくても推測出来ました。

    tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/V8.09.00/CS+.chm/DebugTool-RX.chm/Output/db_P_event.html

    [追記]

    他方で、CS+を1年ぐらい使っていれば、イベントパネルというものも使うでしょうし、イベントパネルの表示内容を見ていれば、おのずと、そのような記述が出来ると推測出来てしまうということもあるだろうなぁ、とも思いますね。

  • NoMaYさん、ありがとうございました。

    "ファイル#行番号"でブレークポイントを設定できます。

    CS+について1日の経験だけですが、ヘルプの文書を見ながら、デバッグ・ツールとPhtyonコンソールの使用方法を調査しています。

    ユーザは行番号の方が欲しいです。その行番号のところにブレークポイントを設定したいです。

    逆アセンブリによって、行番号の場所は最適化がないので、大丈夫だと思います。

    因みに、PCレジスタにもファイルの行番号でアドレスを設定したいが、できないと思います。

    下記のように設定しました。

    Condition = BreakCondition()
    Condition.Address ="a.c#14"
    debugger.Register.SetValue("pc", debugger.Address(Condition.Address))
  • ソースファイルにどう書いてあったかはデバッガは知りません。
    また、デバッガがブレークポイントを設定するのは行ではなくアドレスです。

    エディタの画面上でブレークポイントを設定しようとしても、
    左側にアドレスが表示されていない場所ではどのアドレスに設定して良いのか
    分からないので設定できません。

    逆に言えばアドレスさえ指定すればどこでも設定できるので任意の場所に設定したければ
    逆アセンブルの画面を使えば良いことになります

Reply
  • ソースファイルにどう書いてあったかはデバッガは知りません。
    また、デバッガがブレークポイントを設定するのは行ではなくアドレスです。

    エディタの画面上でブレークポイントを設定しようとしても、
    左側にアドレスが表示されていない場所ではどのアドレスに設定して良いのか
    分からないので設定できません。

    逆に言えばアドレスさえ指定すればどこでも設定できるので任意の場所に設定したければ
    逆アセンブルの画面を使えば良いことになります

Children
  • ほやさん、こんにちは。Amramです。

    おっしゃる通りです。アドレスがあるところはブレークポイントの前提です。

    現状、行番号の箇所はアドレスがあることが判明しました。

    ユーザにとって、行番号でブレークポイントを設定して楽です。

    ユーザの要求を満足するため、このようなスクリプトの仕様となります。