シンボル ファイルと Visual Studio のシンボル設定を理解する

こんにちは、Japan Developer Support Core チームの松井です。今回は、シンボル ファイルと Visual Studio のシンボル設定についてご案内します。 シンボル ファイルはアプリケーションをデバッグする上で欠かせないものの一つです。アプリケーションのデバッグは開発時だけでなくリリース後も必要になる可能性があり、またシンボルをロードするにはそのシンボルがモジュールのビルドと同時に生成されたものである必要があるため、リリース用のビルドであってもシンボル ファイルを生成して手元で大切に保管しておかなければなりません。そのため、Visual Studio のコンパイル オプションではシンボル ファイルの生成が既定で有効となっています。 シンボル ファイルがない場合、ユニファイド サポート等で弊社へアプリケーションのデバッグのご支援をご依頼いただいても効果的なご支援が...

Read more

同一ソースコードから生成されるビルド成果物のバイナリ同一性について

こんにちは、Japan Developer Support Core チームの松井です。今回は、Visual Studio に含まれる C++, C#, Visual Basic.NET における、同一ソースコードから生成されるビルド成果物のバイナリ同一性についてご案内します。 はじめに「同一ソースコードをビルドして得られる成果物は、毎回のビルド毎にバイナリ レベルで同一であることが保証されるか?」というご質問は、私たちのサポート チームによくいただくお問い合わせ内容の一つです。同一ソースコードからバイト単位で同一のビルド成果物を得られるようにすることは、決定論的 (deterministic) ビルド、再現可能 (reproducible) ビルドなどとして弊社製品に限らず様々な場所で議論されています。 ご質問の背景は様々ですが、お客様からいただく代表的なものとして以下のような状況が挙げ...

Read more

Visual Studio 2019 version 16.3.x でビルドした C/C++ アプリが例外 0xC000001d で異常終了する

こんにちは、Japan Developer Support Core チームの松井です。今回は Visual Studio 2019 version 16.3.x でビルドした C/C++ アプリケーションが特定の環境で 0xC000001d により異常終了する事象についてご案内します。 なお、この記事は Developer Community で報告されている問題についてご案内しております。対応の経緯などの詳細内容については、参考情報の項に記載しているリンク先のドキュメントをご参照ください。 現象Visual Studio 2019 version 16.3.x でビルドした C/C++ アプリケーションで、下記すべての条件を満たす場合に、例外コード 0xC000001d でアプリケーションが異常終了する場合があります。 ハードウェアAVX-512 命令をサポートする CPU オペレ...

Read more

Visual Studio 2019 version 16.0 サポート終了のご案内

こんにちは、Japan Developer Support Core チームの松井です。今回は Visual Studio 2019 version 16.0 のサポート終了についてご案内します。 Visual Studio 2019 version 16.0 のサポート終了についてVisual Studio 2019 version 16.0 (リリース初期のバージョン) は、以下のドキュメントに記載されている日のとおり 2021 年 1 月 12 日 (日本時間 2021 年 1 月 13 日) でサポートを終了します。 https://docs.microsoft.com/ja-jp/lifecycle/products/visual-studio-2019 サポートの終了後、version 16.0 についてはセキュリティ修正を含め更新プログラムの提供が行われませんのでご注意くださ...

Read more

浮動小数点を利用する際に知っておきたいこと

(※ 2014 年 10 月 28 日に Microsoft Japan Visual Studio Support Team Blog に公開した情報のアーカイブです。)(※ 参照先ドキュメントの変更や廃止に伴い、リンク先を差し替えています。) こんにちは。Visual Studio サポート チームです。 今回は、Visual Studio でアプリケーションを開発する時にデータ型として使用できる浮動小数点数についてのお話です。本記事の内容は Visual C++、Visual C#、Visual Basic を対象としております。 浮動小数点数を使用する際の注意点浮動小数点数はプログラムで小数を扱うために広く利用されていますが、少し癖のあるデータ型でもあるため、その特性をよく理解して利用しないと、思わぬ落とし穴に遭遇してしまうこともあります。浮動小数点の特性として、注意した方が良いも...

Read more

[メモリリーク #1] [HOWTO] UMDH を用いたメモリリーク調査技法

(※ 2013 年 8 月 18 日に JAPAN Platform SDK(Windows SDK) Support Team Blog に公開した情報の再編集・再掲です。) こんにちは、Japan Developer Support Core チーム 平田 a.k.a ぴろとです。本日は、メモリ リークに焦点を当てて調査を行う方法についてご紹介いたします。 概要説明多くの場合、アプリケーションのメモリ リーク箇所の特定は非常に難しいトラブルシューティングとなります。しかしながら、本日ご紹介させていただく User-Mode Dump Heap (以下、UMDH) というツールを用いることで、メモリ リークの発生箇所や、リークの大きさを特定することができます。私たちもお客様からのお問い合わせを調査する際に利用しているツールですので、ひょっとしたらメモリ リークしてるかも?という場合に...

Read more

イベント ID 1000 で記録される Application Error のイベント ログについて

こんにちは、Japan Developer Support Core チームの松井です。今回は、イベント ID 1000 で記録される Application Error のイベント ログについて、ログに記録されている内容の意味や、調査を進める上で一般的に必要となる情報について紹介します。 Application Error が発生する原因は様々で、原因を特定するために必要な調査手法も一様ではなく、調査には困難を伴うことが多くあります。この記事では Application Error に関して概要をお伝えしますが、お客様が開発したアプリケーションで発生しているエラーのデバッグや調査を弊社のサポート サービスで承っていますので、お困りのことがあればサポート サービスのご利用もご検討いただければ幸いです。 1. イベント ログに記録される Application Error の内容についてアプ...

Read more

32 bit アプリケーションで発生するメモリ不足に関連するエラーについて

こんにちは、Japan Developer Support Core チームの松井です。今回は、32 bit アプリケーションで発生するメモリ不足に関連するエラーについて、よくあるお問い合わせとその一般的な回答や見解などをご案内します。 大きなサイズのデータを扱うアプリケーションや、長時間実行し続ける 32 bit アプリケーションは、メモリ不足によりメモリ割り当てに失敗する問題に悩まされる場合があります。メモリ割り当てに失敗する状況は ERROR_NOT_ENOUGH_MEMORY (8) が返される、System.OutOfMemoryException がスローされるなどの形で顕在化しますが、原因はメモリ リークによる枯渇やフラグメンテーションなど様々です。 本記事の内容がメモリ不足に関連するエラーが発生したときの考え方やトラブルシュートの際の参考になれば幸いです。 よくあるお問い...

Read more

WER を使って Dump を採取する

Windows エラー報告 (Windows Error Reporting) を使って Dump を採取するこんにちは、Japan Developer Support Core チーム 平田 a.k.a ぴろとです。以前は、ミニ四駆に精を出していましたが、最近はメダカの飼育にはまってます。マイクロソフトの中の人には、沼にはまった趣味を持つ人が多いので、話を聞くだけでもいろいろな視点をもたらしてくれるよい同僚がいて、刺激を受けてます。 話を戻して、前回は、ProcDump を用いてダンプの採取をおこないました。クラッシュ系のダンプを採取する場合には、ProcDump のようにアタッチをしたままで運用することが難しいパターンもあります。この場合は、Windows が提供している Windows Error Reporting を用いてクラッシュ時に自動でダンプを取得するように設定をするこ...

Read more

Dump ファイルの取得

こんにちは、Japan Developer Support Core チーム 平田 a.k.a ぴろとです。本日は ProcDump を使用して、アプリケーションのダンプの採取を行う方法についてご案内をさせていただきます。サポート部門で以前は、adplus というツールを利用することが多かったのですが、最近は、ProcDump をご案内することが多くなってきました。adplus は、Debugging Tools for Windows に同梱されるツールになっています。そのため、あらかじめ Windows SDK を別途インストールをしていただいた環境から、WinDbg のインストールをするための再頒布パッケージを採取環境にインストールが必要になってしまうため、情報採取までの手順が長いためとなります。 ProdDump の入手方法についてProcDump は、Sysinternal Su...

Read more