Debug程序无法运行解决

说明:文章内容部分参考网络上的解决思路。


在没有安装Microsoft Visual Studio的系统上,Debug版本无法正常运行。这是由于缺少vs运行时库引起的。

以vs2005为例。开发机用vs2005编译出Debug版本程序,发送到一台没有安装过vs的机器上运行,运行不成功。

解决方法如下。

C:\ProgramFiles\Microsoft Visual Studio 8\

VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT下找到了下列文件:

msvcm80d.dll

msvcp80d.dll

msvcr80d.dll

Microsoft.VC80.DebugCRT.manifest

 

如果用到MFC,则还需要到MFC运行时库。

C:\ProgramFiles\Microsoft Visual Studio 8\

VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugMFC下找到了下列文件:

mfc80d.dll

mfc80ud.dll

mfcm80d.dll

mfcm80ud.dll

Microsoft.VC80.DebugMFC.manifest

 

把dll与manifest文件复制到目标机器上,放到运行程序同一文件夹或系统system32目录下,便可正确运行。

注意:vs2005采用Manifest文件来管理动态库的版本,防止动态库升级引发的“DLL HELL”,所以复制时不要遗漏.manifest文件。

程序崩溃和直接运行程序是两个不同的问题。 1. **程序崩溃**:通常指的是程序执行过程中遇到了一个严重错误,导致程序终止。这可能是由于内存访问违规、除以零、栈溢出、未处理的异常等错误引起。在C语言中,没有内置的异常处理机制,所以这些错误通常会导致程序崩溃。要解决这个问题,你需要调试程序,找出导致崩溃的具体原因。这通常涉及使用调试器(如GDB)来逐步执行代码、检查变量的值以及监控程序的状态。 2. **直接运行程序**:当你从命令行或者通过IDE直接运行程序时,程序会从main函数开始执行,直到结束或崩溃。如果你的程序在某些条件下会崩溃,而这些条件在你的运行环境中没有被触发,那么程序可能会正常运行。 这里有一个简单的示例代码,演示了如何使用GDB调试一个可能崩溃的C程序。假设我们的程序有一个除以零的错误,这会导致程序崩溃。 ```c #include <stdio.h> int main() { int x = 0; int y = 1; int result = y / x; // 这将导致程序崩溃,因为除以零了 printf("Result is %d\n", result); return 0; } ``` 要使用GDB调试上述程序,可以这样做: 1. 编译程序时加上`-g`选项,这将包含调试信息。 ``` gcc -g -o myprogram myprogram.c ``` 2. 启动GDB并加载程序。 ``` gdb ./myprogram ``` 3. 在GDB中设置断点(如果需要)。 ``` (gdb) break main ``` 4. 运行程序。 ``` (gdb) run ``` 5. 如果程序到达断点且未崩溃,可以单步执行,检查变量的值等。 ``` (gdb) step ``` 6. 如果程序崩溃,GDB会停止运行并显示错误发生的位置。 通过这种方式,你可以逐步跟踪程序,找出崩溃的原因,并解决它。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值