64 bit exe crashing outside visual studio but working inside visual studio

蓝咒 提交于 2020-02-25 04:43:24

问题


I compiled a program using freeglut, optix, cuda and other libraries (some of them dinamically loaded). It compiles and runs without problems in Visual Studio but it crashes if I execute it outside Visual Studio. Both release and debug versions work within VS, they both crash without any information on Windows 8 if I try to execute them directly.

I already included all the necessary DLLs, that didn't work.

What could be the problem?


回答1:


You can try comparing the environments between visual studio and the default environment.

Dependency walker should identify any missing DLLs.




回答2:


Most such observations are usually coming from undefined behavior -- using uninitialized variable, dangling pointers/refs, overrunning buffer.

You may try to use Application Verifier, with some luck it might rearrange the used memory enough for you to trigger the problem under debug to help corner it.

Also, when it crashes you should get a prompt to launch VS and inspect the problem -- did it not indicate a hint? What was the immediate cause of the crash and what you had on the call stack there?




回答3:


Get WinDBG, then File > Open Executable and run the program under WinDBG. When it crashes, you will get some more information. My answer here describes an issue in .net, but the concept applies to native C++ as well.




回答4:


Visual studio runs executables under "debug" mode, meaning a debugger is present.

What does this mean? If you check out the msvcrt implementation, if the runtime detects a debugger is present (IsDebuggerPresent), then heaps preform differently.

What does this mean? It means buffer sizes are "nudged" upwards, it means memory allocations are wiped clean by default (no need to memset), etc.

This can cause a variety of bugs to manifest, or some more subtle bugs to be hidden.



来源:https://stackoverflow.com/questions/17433933/64-bit-exe-crashing-outside-visual-studio-but-working-inside-visual-studio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!