Включение встроенной отладки и нажатие клавиши F12 вызывает __debugbreak
В приложении, использующем OpenTK, при включении встроенной отладки и нажатии F12 отладчик ломается:
Инструкция точки останова (оператор __debugbreak() или аналогичный вызов) была выполнена в ...
Стек вызовов не очень помогает определить причину:
ntdll.dll!DbgBreakPoint()
ntdll.dll!DbgUiRemoteBreakin()
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()
Сначала я подумал, что это связано с AeDebug, однако это не так:
- изменение Auto ничего не дает
- изменение UserDebuggerHotKey ничего не делает
- изменение отладчика ничего не дает
- перезагрузка компьютера, сброс параметров Visual Studio ничего не делает
Простейшее приложение , где это происходит :
using OpenTK.Graphics.OpenGL;
using OpenTK.Mathematics;
using OpenTK.Windowing.Common;
using OpenTK.Windowing.Desktop;
using OpenTK.Windowing.GraphicsLibraryFramework;
using var window = new MyGameWindow(GameWindowSettings.Default, NativeWindowSettings.Default);
window.Run();
public class MyGameWindow : GameWindow {
public MyGameWindow(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings)
: base(gameWindowSettings, nativeWindowSettings) { }
private double TotalTime { get; set; }
protected override void OnUpdateFrame(FrameEventArgs args) {
TotalTime += args.Time;
if (KeyboardState[Keys.F12])
TotalTime = 0;
}
protected override void OnRenderFrame(FrameEventArgs args) {
GL.Clear(ClearBufferMask.ColorBufferBit);
GL.ClearColor(Color4.FromHsv(new Vector4((float)TotalTime % 10f / 10f, 1.0f, 0.5f, 1.0f)));
SwapBuffers();
}
protected override void OnResize(ResizeEventArgs e) {
base.OnResize(e);
GL.Viewport(0, 0, e.Width, e.Height);
}
}
запускSettings.json:
{
"profiles": {
"DebugBreakF12": {
"commandName": "Project",
"nativeDebugging": true
}
}
}
Вопрос:
Как можно отключить__debugbreak
поведение при нажатии клавиши F12?
Или я должен просто забыть использовать клавишу F12, когда включена собственная отладка?