none
ddkのコマンドラインでビルドしたが、symまたmapファイルを作成してくれない RRS feed

  • 質問

  • 初めまして、当方windows XP SP3でddk 3790.1830でXP checkedのコマンドラインで浜田憲一郎さんの(windows XPデバイスドライバプログラミング)の304Pのusbtest

    を(build -cew)でビルドしましたが、usbtest.symとusbtest.mapとは

    作成してくれません。よってwindbgにてのリモートデバッグもできません。

    sourceの文法に問題があるのでしょうか。

    お手数ですがご返答おねがいいたします。

    • 移動 Mike Wang (MSCS) 2012年10月2日 12:59 (移動元:Windows デバイスドライバー開発)
    2010年12月26日 10:50

回答

  • 「Windows XP デバイス ドライバ プログラミング」という本は読んだことが無いので何とも言えませんが。。。。
    WinDbg でデバッグを行う際には、sym ファイルや map ファイルは必要ないと思います。
    SoftICE を使用してデバッグする場合は sym ファイルが必要でしたが、WinDbg では代わりに pdb ファイルが必要に
    なります。
    また、WinDbg でライブ デバッグやダンプ解析を行う際には、WinDbg 上でのシンボル パスの設定が重要になります。
    これが適切に設定されていないと、まともに解析できません。

    WinDbg におけるシンボル パスの設定方法に関しては、下記サイトでわかりやすく説明されていますので、
    そちらを参考にされると良いと思います。

    ------------------------------------------------------------
    メモリダンプに !analyze -v するまで・後編 ~ ダンプを開く~

    http://blogs.msdn.com/b/jpwdkblog/archive/2009/06/11/analyze_2d00_v2.aspx

    4. シンボルファイルの設定
    ------------------------------------------------------------

    ちなみに。。。
    シンボル パスが適切に設定されていなくても(つまりシンボル ファイルが無い状態でも)、
    一応デバッガへの接続は可能なはずですが、そこは大丈夫なんですよね?
    例えば、[Ctrl + Break] キーを押下してもデバッガに Break-In 出来ないのであれば、
    シンボル パスの設定以前に、デバッガの物理的な接続に問題がある可能性が考えられます。
    (あるいは VMWare などの仮想環境を使っているのでしょうか?)

    2010年12月27日 13:39

すべての返信

  • 「Windows XP デバイス ドライバ プログラミング」という本は読んだことが無いので何とも言えませんが。。。。
    WinDbg でデバッグを行う際には、sym ファイルや map ファイルは必要ないと思います。
    SoftICE を使用してデバッグする場合は sym ファイルが必要でしたが、WinDbg では代わりに pdb ファイルが必要に
    なります。
    また、WinDbg でライブ デバッグやダンプ解析を行う際には、WinDbg 上でのシンボル パスの設定が重要になります。
    これが適切に設定されていないと、まともに解析できません。

    WinDbg におけるシンボル パスの設定方法に関しては、下記サイトでわかりやすく説明されていますので、
    そちらを参考にされると良いと思います。

    ------------------------------------------------------------
    メモリダンプに !analyze -v するまで・後編 ~ ダンプを開く~

    http://blogs.msdn.com/b/jpwdkblog/archive/2009/06/11/analyze_2d00_v2.aspx

    4. シンボルファイルの設定
    ------------------------------------------------------------

    ちなみに。。。
    シンボル パスが適切に設定されていなくても(つまりシンボル ファイルが無い状態でも)、
    一応デバッガへの接続は可能なはずですが、そこは大丈夫なんですよね?
    例えば、[Ctrl + Break] キーを押下してもデバッガに Break-In 出来ないのであれば、
    シンボル パスの設定以前に、デバッガの物理的な接続に問題がある可能性が考えられます。
    (あるいは VMWare などの仮想環境を使っているのでしょうか?)

    2010年12月27日 13:39
  • この質問、かなり前から気になっていたのですが、私自身の記憶があいまいで、また問題の書籍も持っていたはずですが紛失してしまい、タイムリーに答えることができませんでした。

    たまたま今日古い開発マシンを立ち上げる機会があり、またご質問の書籍も運良く出てきて、確認することができましたので報告します。

    --

    気になっていたのは次の2点です。答えと合わせて掲載します。

    Q1. この本には本当にWinDBGの起動には *.symファイルと *.map ファイルが必要だと書いてあるのか?

    --

    A1. いいえ。そのような記述はみつかりませんでした。WinDBGに関する説明は 「4-6. WinDBGによるデバッグ」 P.321からなのですが、シンボル等の各パスの設定には、ディレクトリだけを設定するような説明となっています。これは正しい解説です。たまたま質問者が参照したP.304 のエクスプローラの画面に *.symファイルと *.map ファイルが掲載されていたため、WinDBG の起動には、これらの2種類のファイルが必要だと勘違いしたのだと思われます。あらためて質問を良く見ると、①なぜ*.symファイルと *.map ファイルが作成されないのか ②なぜWinDBGのリモートデバッグができないのか、という2種類のことを質問していたことがわかりました。

    ----

    Q2. いつからドライバのビルド時に *.symファイルと *.map ファイルが作成されなくなったのか?

    --

    A2. たまたま古い開発マシンにインストールされていたDDKでためしたところ、次のような事実がわかりました。

    - Windows XP SP1 DDK (2600.1160) →作成されます
    - Windows Server 2003 SP1 DDK (3790.1830) →作成されません
    - Windows Vista WDK (6000) →作成されません

    --

    *.symファイルと *.map は(確か?)Windows NT/95 の頃からある古い形式のシンボルファイルとマップファイルです。現在ではシンボルファイルとしてはお馬鹿さんご指摘の通り *.pdb 形式だけしか使いません。WinDBGでリモートデバッグができないのは、別の原因です。

    --------

    このようにMicrosoftが提供するドライバ開発環境は少しずつ進化して行きます。現在ではWindows 8 用WDK のRelease Preview 版が公開されています。Windos 8 WDKではVisual Studio 2012にWinDBGが統合され、正式版リリース後はWindows Vista以降のOS用ドライバ開発は、全てこのWindos 8 WDK を使用して行うようになります。Windows XP用のドライバは、現状通り WDK 7.1.0 を使用して開発することになります。



    2012年7月27日 15:14
    モデレータ