Process Monitor ログの採取手順

こんにちは、Japan Developer Support Core チームの松井です。今回は、Process Monitor の概要とログの採取手順をご案内します。 Process Monitor は弊社が無償で公開している Sysinternals に含まれるツールの一つです。Process Monitor では、動作しているプロセスによるファイルやレジストリへのアクセス、プロセスやスレッドの起動や終了といったアクティビティについて、記録や解析を行うことが可能です。ファイルやレジストリなどに関する問題を調査するための直接的な手段としてだけでなく、お客様のアプリケーションの動作やプロセス間の関係性を正確に把握して調査方針を検討する目的などでも、情報採取をお願いさせていただく場合があります。 情報採取時の影響について情報採取の実施中はコンピューターの CPU やディスク IO の負荷が高ま...

Read more

シンボル ファイルと 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