3

VB 6 で新しい VB.NET アプリケーションを書き直そうと考えています。

アプリケーションはターミナル サービスで実行され、COM を多用します。

何らかの理由で、アプリケーションにランダムな奇妙さがあります -

  • ランダム アクセス違反エラー (WinDbg 例外分析は、comdlg32.dll、mscorwks などの dll を指します)
  • ランダム バッファ オーバーフロー エラー (同じ)
  • 一般的なランダム エラー - たとえば、Form.Load の次の行がスローされることがあります - Me.Icon = Resources.MyIcon

リソース、ガベージ コレクション、廃棄パターンなどに関するすべての可能なアドバイスに従いましたが、何の役にも立たないようです。

ハードウェアに問題があると思います。これは、ターミナル サービスの Win2k3 仮想マシンで実行されます。ベース サーバー OS は 64 GB RAM の Win2k3 です。サーバーには、それぞれ独自の「もの」(Exchangeなど)を実行する多くの仮想マシンがあります。

ハードウェアに問題があるか、.NET 環境が思ったほど簡単にプログラミングできないかのいずれかです。

ハードウェアが何らかの形で検証され (まったく別の話)、アプリケーションがそのように動作し続けた場合、それは実行可能なルートになりますか (金属に近づけて書き直します)?

私は仮想マシンの大ファンではなく、仮想マシンの整合性を疑っています。(特に巨大なサーバーでは。)

編集- 返信ありがとうございます。この問題は、x86 コードを対象としていないアプリケーション内の単一の .NET .DLL であることが判明しました。COM オブジェクトはすべて 32 ビットで、OS は 64 ビットであるため、.NET アプリケーションは 32 ビットをターゲットにする必要があります。(これは、私のサンプル VB6 アプリが常に機能する理由を説明しています。とにかくそのルートに本当に行きたかったわけではありません。)

4

3 に答える 3

1

PDB ファイルをインストールし、「Debug Diagnostics Tool 1.1」を使用してアプリを監視し、リークが発生したかどうかを特定します。

これも見る「COM オブジェクト レジストリの干渉を分析するための優れたツールはありますか?」

于 2009-02-10T15:23:49.010 に答える