1

現在、SFML.Net を使用する単純な C# アプリケーション/ゲームがあり、実行後 1 ~ 2 秒以内に実行を停止/終了しますが、警告や例外などは一切発生しません。次のコードを検討してください。

public static void Main(string[] args)
{
   AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException);

   --> The following two lines are run
   Console.WriteLine("Hello");
   Console.WriteLine("Please don't go...");

   // Run the game
   try
   {
      --> This line is reached
      Game.Run();
   }
   catch (Exception e)
   {
      --> This line is never reached
      Console.WriteLine(e.Message.ToString());
   }

   --> These lines are never reached
   Console.WriteLine("Noone ever comes here, I feel so lonely... :(");
   Console.ReadKey();
   }
}

この時点で、おそらく Game.Run() メソッドに問題があると思われます。奇妙なことは、VS Debugger によると、メソッドの最初の行に到達しないことです。

public static void Run()
{
    try
    {
        --> Never reached
        LoadContent();

        // Do stuff here

        while (window.IsOpen())
        {
            // The classic game loop
        }
    }
    catch (Exception e)
    {
        --> Never reached
        Console.WriteLine(e.Message.ToString());
        Console.ReadKey();
    }
}
4

4 に答える 4

1

私の推測では、次のいずれかです。

また

また、次のように指定すると役立ちます。

  1. 最初の行に到達していないことをどのように知っていますか? ブレークポイント?出力?
  2. この関数が入力されることを期待するとどうなりますか? あなたのアプリケーションは存在しますか?
  3. 段階的にデバッグしていますか?
于 2013-09-08T02:24:56.520 に答える
1

数か月後にこれに戻ってきて、自分の間違いがいかにばかげているかに気づきました。アンマネージ コードのデバッグはデフォルトで有効になっていないようで (VS2012 を使用するのはこれが初めてでした)、この例外は SFML のベース C++ ライブラリからスローされていました。

知らない人のために、アンマネージ デバッグを有効にするには: [プロジェクト] > [プロパティ] > [デバッグ] > [アンマネージ コードのデバッグを有効にする] を選択します。

于 2013-12-15T02:41:04.407 に答える