0

私は非常に奇妙な問題を抱えています。C# で Visual Studio 2010 と .net 4 を使用してスタンドアロン アプリケーションの開発を完了しました。

インストールプロジェクトをソリューションに追加し、すべてをビルドしてコンパイルしました。

私はデバッグモードで実行し、後でXPマシンにアプリをインストールしましたが、すべてがスムーズに進み、うまく機能しました!

今、私はインストール パックを取得し、サーバー 2003 r2 を実行する運用マシンにインストールしましたが、実行しようとすると起動し、GUI が数秒間表示されてからクラッシュします。

log4netを使用してコードに多くのログを追加しましたが、XPでは完全に機能し、サーバー2003 r2ではまったく同じインストールが持続しない理由を見つけることができませんでした.

次に、アプリがクラッシュした場合、システム ログ イベント ビューアーの下に書き込まれる可能性があると考えましたが、実際にそうでした。実行するたびに2つのエラーが発生しますが、それらの意味を本当に理解できませんでした。

エラーは以下に添付されています。どんな種類の助けも大歓迎です!

ではごきげんよう!

================================================== ==============================

最初のエラー:

   Event Type:  Error
Event Source:   .NET Runtime 4.0 Error Reporting
Event Category: None
Event ID:   5000
Date:       8/9/2012
Time:       11:03:26 AM
User:       N/A
Computer:   W2003_ORACLE01
Description:
EventType clr20r3, P1 gpsdispatcherserver.exe, P2 1.0.0.0, P3 502220c3, P4 mscorlib, P5 4.0.0.0, P6 4ba1da6f, P7 210, P8 18, P9 system.argumentoutofrange, P10 NIL.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Data:
0000: 63 00 6c 00 72 00 32 00   c.l.r.2.
0008: 30 00 72 00 33 00 2c 00   0.r.3.,.
0010: 20 00 67 00 70 00 73 00    .g.p.s.
0018: 64 00 69 00 73 00 70 00   d.i.s.p.
0020: 61 00 74 00 63 00 68 00   a.t.c.h.
0028: 65 00 72 00 73 00 65 00   e.r.s.e.
0030: 72 00 76 00 65 00 72 00   r.v.e.r.
0038: 2e 00 65 00 78 00 65 00   ..e.x.e.
0040: 2c 00 20 00 31 00 2e 00   ,. .1...
0048: 30 00 2e 00 30 00 2e 00   0...0...
0050: 30 00 2c 00 20 00 35 00   0.,. .5.
0058: 30 00 32 00 32 00 32 00   0.2.2.2.
0060: 30 00 63 00 33 00 2c 00   0.c.3.,.
0068: 20 00 6d 00 73 00 63 00    .m.s.c.
0070: 6f 00 72 00 6c 00 69 00   o.r.l.i.
0078: 62 00 2c 00 20 00 34 00   b.,. .4.
0080: 2e 00 30 00 2e 00 30 00   ..0...0.
0088: 2e 00 30 00 2c 00 20 00   ..0.,. .
0090: 34 00 62 00 61 00 31 00   4.b.a.1.
0098: 64 00 61 00 36 00 66 00   d.a.6.f.
00a0: 2c 00 20 00 32 00 31 00   ,. .2.1.
00a8: 30 00 2c 00 20 00 31 00   0.,. .1.
00b0: 38 00 2c 00 20 00 73 00   8.,. .s.
00b8: 79 00 73 00 74 00 65 00   y.s.t.e.
00c0: 6d 00 2e 00 61 00 72 00   m...a.r.
00c8: 67 00 75 00 6d 00 65 00   g.u.m.e.
00d0: 6e 00 74 00 6f 00 75 00   n.t.o.u.
00d8: 74 00 6f 00 66 00 72 00   t.o.f.r.
00e0: 61 00 6e 00 67 00 65 00   a.n.g.e.
00e8: 20 00 4e 00 49 00 4c 00    .N.I.L.
00f0: 0d 00 0a 00               ....   

================================================== ==============================

2 番目のエラー:

Event Type: Error
Event Source:   .NET Runtime
Event Category: None
Event ID:   1026
Date:       8/9/2012
Time:       11:03:37 AM
User:       N/A
Computer:   W2003_ORACLE01
Description:
Application: GPSDispatcherServer.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ArgumentOutOfRangeException
Stack:
   at System.ThrowHelper.ThrowArgumentOutOfRangeException()
   at System.Collections.Generic.List`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].get_Item(Int32)
   at GPSDispatcherServer.GPSDispatcherServerManager.createGpsDispInstance()
   at System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Threading.ThreadHelper.ThreadStart()


For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

================================================== ==============================

4

2 に答える 2

1

あなたはスタックトレースを持っています、くそー!これは、ネイティブ コードでクラッシュをデバッグする誰もが夢にも思わないことです。これを使って。クラッシュ ポイントのコードは何をしているのか?

あなたのプログラムは、範囲外のインデックスを持ついくつかのオブジェクト [1]GPSDispatcherServer.GPSDispatcherServerManager.createGpsDispInstance()のリスト ( ) にアクセスするメソッドのように見えます。このメソッドとそこから呼び出されたメソッドをSystem.Collections.Generic.Listすべてチェックしてください。some_list[index]

私の推測では、オブジェクトの作成に失敗し、コードによってエラーが無視されたのです。次に、コードは、オブジェクトが作成されてリストに追加されたと想定しました。

失敗には複数の理由が考えられます: サーバー上の一部のコンポーネントの欠如、権限の欠如、リソースの欠如、無効なパス...

[1] シンボルなしでリリース ビルドのみを含むリストに含まれるクラスを判別することは不可能です。System.__Canon は、コンパイラがジェネリック コードを生成するときのジェネリック パラメーターの標準プレースホルダー クラスです。

于 2012-08-09T14:37:19.930 に答える
0

最初に、(プロジェクトのビルド設定で) デバッグ シンボルを使用してアプリケーションをビルドしていることを確認します。

次に、本番サーバーでDebugDiagを使用して、クラッシュ ダンプを取得します。クラッシュ ダンプをキャプチャする方法は他にもありますが、これが最も簡単な方法の 1 つであり、インストールも簡単です。

DebugDiag またはWinDbgを使用して、クラッシュ ダンプをオフラインで分析できます。最も簡単な方法は、クラッシュ ダンプ ファイルをサーバーの DebugDiag Logs ディレクトリから、アプリをビルドした bin\Release フォルダーにコピーすることです。WinDbg を使用している場合は、サーバーにインストールされている .Net フレームワーク (C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 など) に一致するsos.dll拡張子をロードする必要があります。そのため、sos.dll もビルド マシンにコピーし、次を使用して WinDbg にロードします。

.load <full path to sos.dll>

次に、WinDbg でクラッシュ ダンプ ファイルを開きます。アプリケーション シンボル (pdb) はクラッシュ ダンプと同じディレクトリ (bin\Release など) にあるため、WinDbg は自動的にアプリケーション シンボル (pdb) を見つけ、その pdb から WinDbg がソース コードを自動的に見つけます。したがって、クラッシュ ダンプを開くと、その原因となったコード行に移動するはずです。そうでない場合は、F5 を押してみてください。

于 2012-08-09T14:19:42.977 に答える