デバッグツールにダウンロードしたとき、ソースコードにアドレスが表示されない

お世話になります。

プロジェクトのビルド、デバッグツール(E1)へのダウンロードはエラーなしでできているのですが、ソースコードにアドレスが

表示されずブレークポイントが設定できません。

(ダウンロードすると逆アセンブル1のタブが表示され、そこではブレークポイントの設定ができるようです)

ビルドツールの最適化レベルは「デバッグ優先」としています。以前はソースコードにアドレス表示できていましたので

ソースコード側に問題があるのかもしれませんが、そのようなことはあるのでしょうか?

データフラッシュメモリのアクセスを追加したころからアドレス表示ができなくなったように思います。

使用しているツールは、CS+ V8.03.00です。

ご助言、お願い致します。

  • うみうみさん、こんにちは。NoMaYと申します。

    昔のことで、CS+だったか、CubeSuiteだったか、更にその前のIDEの話だったか、記憶が曖昧ですが、プログラムを配置するセクションの名前が、セクション名切り替えをしていな状態の.textといったセクション名でないと、ソースレベルデバッグが出来なくなったことがあったように記憶しています。(今回の件は、CC-RL/CC-RX/CC-RHの何れかだと思いますが、それぞれ微妙に違っているかも知れませんが。)(ごめんなさい、咄嗟にCC-RL/CC-RX/CC-RHでの詳細を思い出せなくて、でもちょっと横着して、マニュアルやヘルプまでは調べてないです。)

    データフラッシュメモリのアクセスを追加した、とのことですが、追加した所でプログラムを配置するセクション名を切り替えた(又はデータのセクション名と共に意識せず切り替わってしまっていた)ものの、元に戻すことを忘れた状態になっていて、その部分から下のソースのもろもろの関数がソースレベルデバッグ出来なくなっている、ということはないでしょうか?

  • NoMaYさん
    ありがとうございます。
    セクション名の確認が必要とのことですね、調べて確認してみます。
  • ソースコードを外部のエディタで編集されたとかで改行が \0d\0a から \0a になったとかしててコンパイラが生成したデバグ情報の行番号とソースコードで連携が取れなくなってるとかはないですか
  • fujitaさん
    ご指摘ありがとうざいました。そういった可能性もあるのですね。
    外部エディタにサクラエディタを使っているのですが、"\r\n"で検索すると改行部が明示されますので改行コードは合っているようです。
  • ビルドツールプロパティのリンクオプションから「セクションを自動的に配置する」を「はい」に設定すると、ソースコードにアドレスが表示されるようになりましたので、セクションの設定に問題があるのは確かなようです。
  • マップファイルでセクションがどうなってるかは確認できるので、意図しない内容になってるかは確認されると良いのでは
  • うみうみ さん、こんにちは。NoMaYです。

    その後、どうでしょうか?まだ解決されていないようであれば、どのコンパイラなのかという情報と、データフラッシュメモリのアクセスを追加したところで何かしらセクション切り替えしていると思われるのですが(そうでなければ普通にソースレベルデバッグ出来ている筈ですので)そのセクション切り替えしたソースの記述(#pragma)内容を教えて頂けないでしょうか?単純なプログラムを作成してシミュレータにダウンロードして試してみようと思ったのです。

  • うみうみ さん、こんにちは。NoMaYです。

    > ビルドツールプロパティのリンクオプションから「セクションを自動的に配置する」を「はい」に設定すると、ソースコードにアドレスが表示されるようになりました

    これで解決した、とも言えますかね。あくまでデバッガの完成度の問題の可能性のひとつですけど、ひとつのソースファイル内で関数の配置がアドレス昇順になっていないとそのソースで何かしらソースレベルデバッグに支障が出てしまう、(セクション名は必ずしも.textといったものでは無くても構わないけれども)、という問題の可能性もあるかも知れません。

  • NoMayさん
    いろいろご心配頂きありがとうございます。コンパイラはCC-RLを使用しており、
    とりあえずは「自動配置有効」設定で凌いでいます。

    セクションの指定は、そういう指定が必要との認識がなかったため一切行っていませんでしたが、いつまたアドレス表示ができなくなるか不安もありますので、この際設定をしようと考えています。
    初心者フォーラムということですので、恥を忍んでお聞きしますが、「セクションの指定」はしなくてはいけないものなのか、指定する場合は適当にアドレスを割り振っていいものなのか、よろしければお教えください。
    お願いいたします。
  • うみうみ さん、こんにちは。NoMaYです。

    > 「セクションの指定」はしなくてはいけないものなのか、指定する場合は適当にアドレスを割り振っていいものなのか

    CC-RL(というかRL78)であれば、コードフラッシュ書き換え(書き換え処理自体とかブート領域/フラッシュ領域の分割とか)をするのでなければ、私もセクションの指定は不要だと思います。(ですので、CC-RL(というかRL78)でのデータフラッシュメモリアクセスも、セクションの指定はしなくても構わないですね。) 私は、普段、自動配置にしています。

    また、うみうみさんの投稿を読み直してみて気付いたのですが、「データフラッシュメモリのアクセスを追加したころから」ということで「所」では無くて「頃」だったのですね。ずっと読み間違えていました。すみません。

    ソースの途中から表示されなくなった、ということでは無くて、どのソースファイルでも全くアドレス表示されなくなってしまった、ということでしょうか?

    また、どうやら、セクション指定の#pragmaは何も記述していない、ということのようですね。

    そういう話ですと、可能であればmapファイルをzipに固めたものを添付して頂ければ、当方で内容を確認してみたいと思います。ただ、mapファイル内をざっと見て、企業秘密に関すること(フォルダ名とかファイル名とか関数名とか変数名とか等から推測が可能になってるケース)が含まれていないことは確認しておいて下さい。(上司の判断が必要になるのかも知れません。) また、mapファイルの設定ですが詳細出力モード(-show=all)にして出力させておいて下さい。

    それでも原因が分からなければ、mtpjファイルとabsファイルとmapファイルをルネサスさんに渡して、ルネサスさんに解析して貰わないといけなくなりそうです。