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

(※ 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

WinDbg で Dump ファイルを開く

こんにちは、Japan Developer Support Core チーム 平田 a.k.a ぴろとです。本日は WinDbg を使用して、ダンプ ファイルを開いて、解析を進める方法をご紹介します。今回は、クラッシュダンプの解析を進めていきます。まずはダンプといっても、取得をする目的を明確にする必要があります。以下に Dump ファイルについて説明を記載しましたため、合わせてご確認ください。 初めてインストールする方は以下のダウンロードページからダウンロードしてくださいWindows 用デバッグ ツールのダウンロード Dump ファイルについて (*.dmp)こちらのファイルは、アプリケーションがクラッシュをしたり、ハングをした際にアプリケーションプロセスのメモリの内容をディスクへ書き出しを行うことで生成されるファイルとなります。   ハング ダンプハング ダンプは、プロセスがハングして...

Read more

DevOps の Self-hosted エージェントを構築して使ってみよう!

こんにちは、Japan Developer Support Core チームです。 Azure DevOps におけるサイレント ヒーロー、縁の下の力持ちである Azure Pipelines エージェントには、いくつか種類があるのをご存じですか? Microsoft-hosted エージェント Self-hosted エージェント Azure virtual machine scale set エージェント 日頃、皆さんが DevOps からコードをビルドしたり、Azure Pipelines を使ってソフトウェアをデプロイする時には、裏でこれらのエージェントが働いています。今日は、これら働き者のエージェントの中から Self-hosted エージェントを実際に構築して、Azure Pipelines から利用して楽しんでみましょう。 Azure Pipelines agent...

Read more

WinDbg で EXE や DLL を Dump ファイルのように開く

こんにちは、Japan Developer Support Core チーム 平田 a.k.a ぴろとです。本日は WinDbg を使用して、EXE や DLL といった実行形式のバイナリ ファイルをダンプ ファイルのように開く方法をご紹介します。また、この方法を活用して、モジュールに実装された関数のアドレスについても確認することができますので、あわせてご紹介します。次回以降ご紹介するダンプ解析のテクニックでも関数のアドレスについては正しく理解している必要がありますので、是非、実際にコマンドを実行してご確認いただけましたら幸いです。 初めてインストールする方は以下のダウンロードページからダウンロードしてくださいWindows 用デバッグ ツールのダウンロード EXE / DLL / SYS ファイルについてこれらのファイルは、PE Format というフォーマットに準じてビルドされたものに...

Read more

Azure DevOps から Repos を利用してみよう (Azure Repos/GitHub)!

こんにちは、Japan Developer Support Core チームです。 Azure Repos や GitHub など、世の中には様々なリポジトリ サービスが公開されていて、まさに群雄割拠の様相を呈していますね。今日は、これらのリポジトリ (Repos) を Azure DevOps (以降、DevOps) から利用して楽しんでみましょう。 本日のメニューはこちらです。 Visual Studio からプッシュした Azure Repos 上のソースコードを、Azure Pipelines 経由でビルド・リリースして、Azure App Service を発行する Azure ポータルから Azure Repos に接続して、Azure Pipeline 経由でビルド・リリースして、Azure App Service を発行する GitHub 上のソースコードを、Azure ...

Read more