そうではなく、Debug + Break コマンドを実行したときにアクティブだったコードで停止します。これは、デバッガーの呼び出し履歴ウィンドウで確認できます。ただし、独自の実行中のコードを中断する可能性は非常に低く、プログラムは 99% の時間を Windows が何か興味深いことが起こったことを知らせるのを待っています。通常、コール スタックは次のようになります。
[Managed to Native Transition]
System.Windows.Forms.dll!System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(System.IntPtr dwComponentID, int reason, int pvLoopData) + 0x444 bytes
System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(int reason, System.Windows.Forms.ApplicationContext context) + 0x155 bytes
System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoop(int reason, System.Windows.Forms.ApplicationContext context) + 0x4a bytes
System.Windows.Forms.dll!System.Windows.Forms.Application.Run(System.Windows.Forms.Form mainForm) + 0x31 bytes
> WindowsFormsApplication1.exe!WindowsFormsApplication1.Program.Main() Line 16 + 0x1d bytes C#
[Native to Managed Transition]
[Managed to Native Transition]
mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args) + 0x6b bytes
Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() + 0x27 bytes
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state) + 0x6f bytes
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0xa7 bytes
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0x16 bytes
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x41 bytes
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x44 bytes
[Native to Managed Transition]
FPushMessageLoop() メソッドがスタック トレースの最上位にあることに注意してください。これは、Windows 通知を受け取る Windows GUI アプリの有名なメッセージ ループです。アンマネージ デバッグも有効にすると、さらに表示されるようになります。コアの GetMessage() winapi 関数は、メッセージ ループの重要な部分です。
>
スタック トレースのマーカーに注意してください。それがあなたが話しているコード行です。これが表示される理由は、その上のコードが .NET フレームワークの一部であるためです。また、参照ソースをインストールしていない場合、そのソース コードはありません。
そのため、デバッガーはスタックをたどり、表示する関連ソース コードを探します。そして必然的に、Program.cs 内の Main() メソッドである Application.Run() 呼び出しに行き着きます。
GUI アプリで便利なブレークを取得するには、ブレークポイントを設定する必要があります。