草庐IT

windows - 为什么有些程序在使用调试器时可以运行,但在运行正常的调试执行时却不行?

我有好几次使用VisualStudio和其他东西编写程序时,在换行符的某处。自然地,我的第一个想法是在程序的早期设置一个断点,然后逐行缓慢地逐步执行代码,直到遇到错误。但很多时候我发现在调试器中缓慢地逐步执行代码时一切正常。但是,当我尝试在没有断点的情况下运行程序时,出现了问题。为什么会这样?逐行单步执行代码实际上与仅在dubug模式下运行程序不同吗?(我不是在谈论调试与发布,我在谈论调试与逐行调试) 最佳答案 一个原因可能是您在多个执行线程之间存在计时问题,当程序“全速”运行时和您在调试器中暂停线程时,这些问题会以不同方式发生。

windows - 为什么此 CreateFile() 调用会导致 Windows 8 出现蓝屏?

如果我尝试运行这个:#includeintmain(){CreateFile(TEXT("X:\\$MFT\\Folder"),FILE_READ_ATTRIBUTES,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,0,NULL);return0;}任何进一步尝试访问X:时系统死锁(在Windows8上,随后是BSOD)。(更新:X:只是一个占位符;您可以将其替换为任何有效的驱动器。)我花了一段时间才找到它,现在我找到了——但我很困惑:原因是什么? 最佳答案

windows - MFC 应用程序在 NTDLL.dll 中崩溃

我有一个基于MFC的应用程序。它会在几秒钟后继续寻找文件(使用基于CreateTimerQueueTimer的计时器)并执行一些操作。这在XP上总是崩溃(原因不明)。此应用程序在Windows7和Windows8上运行良好。但在XP上问题仍然存在。下面是没有显示任何帮助的调用堆栈反汇编截图如下:编辑1:我更改了一些设置并获得了这个新的调用堆栈。但是还是没有得到线索。:我不明白如何找出崩溃的原因。是否有任何提示或任何方式来跟踪它从反汇编中播种?还是系统的NTDLL.DLL文件有问题?欢迎任何帮助。 最佳答案 分析堆栈后,我意识到可能是

windows - 带有 User32.dll 的 LoadLibraryA 在 ntdll.dll(x64 程序集)中崩溃

所以我有一个汇编代码块,它初始化一个程序,解析kernel32,找到GetProcAddress,然后找到LoadLibarayA来加载User32.dll。它工作到LoadLibraryA为止。它在函数调用中崩溃,但我可以看到调试器中加载了User32.dll。如果我尝试在不同的模块(例如Kernel32.dll)上使用LoadLibraryA,它会返回并成功。如果你想看的话,这里有完整的源代码https://gist.github.com/mojobojo/921a5af897e86bb940a2Exceptionthrownat0x00007FFAFAE8E91C(ntdll.d

python - 如何以编程方式检测应用程序在 Windows 中崩溃?

我正在运行一个启动多个应用程序的Python脚本。我需要一种方法来检测启动的应用程序是否已崩溃。一些应用程序有内部崩溃处理如何检测崩溃? 最佳答案 如果他们有内部崩溃处理,就不可能检测到。应用程序将处理错误并正常退出。如果您将自己附加为调试器,您甚至无法检测到这一点。原因是exceptiondispatching(MSDN):调试器收到有关异常的通知。这称为第一次机会异常。然而,这可能是“正常的”,例如FileNotFound,这是应用程序所期望的。Windows正在寻找想要处理异常的人。这可以是Python应用程序的exceptb

windows - 如何仅使用 WaitForDebugEvent 系列函数来监视 UNHANDLED 异常?

我正在trycatch应用程序中未处理的异常并使用WaitForDebugEvent函数在它们上重新启动它。但我无法判断异常何时由应用程序处理(例如try..catch),何时不处理。我怎么做?DEBUG_EVENT结构中好像没有这样的数据。 最佳答案 如果您没有使用WaitForDebugEvent捕获某些异常,您可能还想尝试注入(inject)UnhandledExceptionFilter。除此之外,检查您的处理是否匹配MicrosoftsExample 关于windows-如何仅

windows - Monogame OpenGL 游戏在某些 Windows 7 计算机上崩溃

我正在使用Monogame学习一些游戏开发。我启动了一个WindowsOpenGL项目,在我的Win8机器上一切正常。我已经编译了项目并将其发送给2个人,他们都使用win7x64,其中一个无法打开游戏。之后,我在另一台电脑(也是win7x64)上测试,同样的问题,游戏进程开始,然后屏幕闪烁(Aero似乎停用),然后一切恢复正常,进程我的游戏在没有消息的情况下崩溃了。我敢肯定,我的代码没有问题,可能缺少一些dll,但其中大部分是随游戏复制的Lidgren.Network.dllMonoGame.Framework.dllOpenTK.dllSDL.dll道.sdl.dll真诚的卡恩范贝克

windows - llvm jit 窗口 8.1

我正在尝试在VS2013编译的Windows8.1上运行斐波那契演示。到目前为止我解决了几个问题:1.目标文件格式不兼容-我在函数getDefaultFormat(constTriple&T)forwindows中将Triple::COFF更改为Triple::ELF2.缺少asm打印机-我添加了InitializeNativeTargetAsmPrinter()3.内存保护-我手动将VirtualProtect设置为PAGE_EXECUTE(它没有设置,我不知道它应该如何工作)现在我可以运行生成的代码了,但是它崩溃了,这里是反汇编代码:000000EC4B890000推送rsi000

c - 为什么这个 C 程序在 windows 上崩溃而在 linux 上运行正常?

我写了一个程序来求谐波数(then-thharmonicnumberisthesumofthereciprocalsofthefirstnnaturalnumbers)数字序列。我的程序将其输入作为命令行参数并以表格格式打印谐波数。作为一个例子,它是这样工作的:C:\Users\EDDiE\c>har10305102.9289682539682538153.3182289932289937203.5977396571436819253.8159581777535068303.994987130920390610(argv[1])=startingnumber,30(argv[2])=e

windows - 为导致崩溃的非静态函数指针赋值 - 为什么?

我有一个定义如下的函数:typedefvoid(*logprintf_t)(constchar*format,...);logprintf_tlogprintfvoidmy_function(){logprintf=cast(logprintf_t)0x12345;}它会导致应用程序退出。但是,如果我将logprintf设为静态(我在某处看到过这个技巧),即:voidmy_function(){staticlogprint_tlogprintf=cast(logprintf_t)0x12345;}它不会崩溃。这是语言规则还是某种错误?为什么dmd不警告这个?