关于使用VS.Net2003调试器出现的问题及相关解决方法

原文地址:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vsdebug.asp
一些有用的信息被我翻译了,放在这里以后可能用的上

消息1:无法在服务器上启动调试(Unable to start debugging on the Web server)

原因1:IIS的应用程序设置并没有使用集成windows认证,打开windows集成认证选项

原因2:检查IIS中的"保持HTTP连接"选项,确保该选项为选中状态

消息2:您没有在服务器启动调试的权限(You do not have permission to debug the server)

原因1:确保windows集成认证选项打开
原因2:如果您打开了windows集成认证选项的话,确保您的用户帐号具有对IIS目录的完全控制权
原 因3:如果您的Web项目使用额完整的机器名作为项目名称(machinename.domainname.something)的话,那么这个Web站 点就会被认为是一个Internet站点,所以IE的缺省设置就会影响登陆状态,在这种情况下,您需要在IE设置的Internet区域中允许您使用当前 用户帐户登陆;这并不是IE的缺省设置,所以您最好使用你的机器名称来作为您项目的名字!

消息3:当发送HTTP调试请求时发生服务器端错误(Server side-error occurred on sending debug HTTP request)

原因1:您的Web应用程序可能没有应用程序名称,解决这个问题,您需要使用IIS MMC为您的Web项目分配一个应用程序名称;

原因2:如果您正在使用NTFS文件系统的话,确保aspnet帐户对于wwwroot或您的应用程序文件夹具有适当的读写权限

消息4:当前项目没有被配置为允许调试(The project is not configured to be debugged)

对于这个错误,您需要确保您的Web被配置为调试状态,完成这项工作,您需要在web.config中设置debug=true
原因1:asp.net 调试在项目属性中没有被开启;

原因2:请确认所期望的DLL已经被载入对应的调试符号文件,您可以在模块窗口中检查

消息5:调试器可能没有被安装(The debugger is not properly installed)

如果遇到这样的问题,检查控制台应用程序项目中的调试功能,如果控制台应用程序项目中显示图示的错误信息的话,说明您的.net framework并没有被完全的安装

您需要执行命令"regsvr32 mscordbi.dll"手动注册您的"mscordbi.dll"文件

消息6:服务器不支持asp.net 或 ATL server 应用程序调试

如 果你正使用WindowsXP Pro或是Win2000 Pro的话,您可能要思考一下您安装VS.Net的顺序问题;您如果在安装Vs.Net之后才安装IIS的话,你就会遇到这个错误,在这种情况下,您需要 使用命令"aspnet_regiis.exe –i"来注册"aspnet_isapi.dll"

消息7:访问被拒绝。检查您是否是系统管理员或...组的成员(Access is denied. Verify that you are an administrator or a member of ...)

您的帐户可能不是本机Debugger Users组的成员,将您的帐户加入该组可以解决这个问题;

消息8:无法启动ASP.NET或ATL Server调试

原因1:您可能安装了IIS Lockdown,如果是这样的话,找到urlscan.ini文件,在[allowverbs]节中加入DEBUG(大小写敏感)字段
原因2:如果您正使用域控制器(Domain controller)作为您的服务器,并且您的项目使用了机器器名而没有使用完整的域名的话,您肯能需要改变您项目的Url为使用完整的域名
原 因3:如果您的IIS被设置为使用专用的IP作为Web站点的定位标志(Web site identification)的话,你肯那个就会遇到这个错误;在这种情况下,您需要改变您的项目名字为直接使用IP地址作为项目名。对于已经存在的项 目,你需要编辑.sln文件和.webinfo文件来改变项目的名字为IP地址
原因4:web.config文件中的<httpRuntime maxRequestLength="#########" />值太大。缺省单位是Kbyte,不是byte,所以如果您使用了错误的单位来改变这个数值的话,可能会导致调试错误!

消息9:访问被拒绝

原因:您可能是Debugger Users组中的成员,但是你没有调试aspnet工作进程的权限,因为您并不是aspnet用户帐户或Administrator组中的成员。将您的用户帐户加入到机器的Administrator组中以解决该问题。

无法对于一个Included File进行调试

ASPX 中,您无法调试一个included file,一个included fie通常是您从asp项目转向ASPX的结果,如果您使用<!--#include file = "file name"-->包含文件,您可能不能正确的调试那个包含文件,您需要使用<!--#include virtual="file name"-->来代替。

在改变了您的密码时,您需要为使用ASP.NET调试进行log off/log in

在安装了Win2000 SP4后,ASP.NET调试无法工作,报错:"访问被拒绝"
解决办法是使用命令"regsvr32 –i aspnet_isap.dll"重新注册aspnet_isapi.dll

只能在页面第一次被加载的时候停在断点处(hit breakpoint)
对于这个问题可能有几种不同 的原因,但是最有可能的原因应该是您在web.config文件中使用了page cache选项;如果您在web.config中看到了如<add key="<your web project name".Web.EnablePageCache" value="True" />的配置,您需要设置value为False来关闭Web页面缓存,在改变该设置之后,您应该就可以停在断点处了;

您需要共享一个Web服务器来进行调试,但是又不想其他用户能够在该机器上进行管理
在VS.Net中,有两件事情决定是否一个用户可以进行调试,一是Debugger Users组,令一个是用户权限,如administrator,power user 或者 SEDebug
Debugger Users组决定是否用户可以访问VS调试模块(主要是MDM-Machine Debug Manager,VS的一个部分),所以作为该组成员意味着您获得了访问MDM的权限,所以您可以调试您的开放进程(open process)并且可以看到您机器上的进程列表.
但在这之后,您是否可以调试其他用户的进程就决定于您的权限,举例说明:如果您想要调试其他用户的自然进程(native process),您就需要具有SEDebug权限。对于其他用户的托管进程(Managed Process),您需要是该机器的管理员!
由于这样的约束,在这样的情况下,学生们就必须被提升为管理员,如果不这样做的话ASP.NET工作进程在缺省情况下就无法被调试。

常规调试(General Debugging)
这些情况是基于控制台应用程序类型的

消息1:无法启动调试

这个问题时因为没有正确注册mscordbi.dll造成的,重新注册文件就可以解决这个问题

消息2:无法启动调试,访问被拒绝

确保Machine Debugger Manager服务被正确启动,并且您是Debugger Users组中的一员,或是administrator

我可以启动托管调试(Managed debugging),但是PDB并没被加载,所以我无法设置任何断点
如果调试器被正确运行,但是您并没有停在任何断点的话,您可能需要检查diasymreader.dll的安装情况,这个文件可能没有被注册,您需要这样做:
regsvr32 <path to DLL>\diasymreader.dll

托管调试无法工作
您使用CLR模式附加到一个自然进程在该进程还没有创建一个CLR对象时,托管调试就无法工作
解决1:在CLR代码已经被该进程使用后再附加到该进程
解决2:使用InterOp模式附加到该进程,在这种情况下,您不需要在CLR代码被调用以后再附加到该进程

托管调试器无响应
当您针对托管代码启动调试时,调试器无响应
解决:确认 .NET Framework Support 服务被停止并且禁用(仅停止该服务是不够的)
如果您并没有.NET Framework Support 在运行的话,禁止IIS admin服务

对C# 代码使用 Stepping 结果并不正确
看看以下代码:
string someStr;
someStr = "SomeValue";
if(someStr == null)
    Console.WriteLine("what's up?");

try
{
}
catch(Exception e)
{
}

如果您对这段代码使用Step的话,您会发现当您进入"if"语句的时候,指令指针(instruction pointer)会移动到Console.WriteLine("what's up?");这句
这并不是调试器的bug,但是这是针对try catch块调试信息的一支问题。看看以下该例子的反编译代码:
if(someStr == null)
0000002a  cmp         dword ptr [ebp-18h],0
0000002e  jne         0000003C

Console.WriteLine("what's up?");
00000030  mov         ecx,dword ptr ds:[01C50070h]
00000036  call        dword ptr ds:[02F0257Ch]
0000003c  jmp         00000048

catch(Exception e)
0000003e  mov         dword ptr [ebp-1Ch],eax
00000041  call        762C0846
00000046  jmp         00000048

}
00000048  nop

当value并不为真的时候指令指针移动到了0000003c  jmp         00000048这一行,但是这行错误的对应了if语句的语句块。所以当执行结果正确时,我们看到的调试过程并不正确!

因果调试:在Web Service 客户端和Web Service之间进行步进(Stepping)

无法从Web Service客户端进入Web Service进行调试
缺省设置下并不允许您从Web Service客户端进入Web Service。
ASPNET工作进程在"aspnet"或"network service"用户帐户下工作,这些帐号并不具有通过DCOM访问MDM的权限。所以,您需要把这些帐户增加进Debugger Users组中

在允许扮演Web Service(impersonation of Web service)之后,您无法做到因果步进
您需要做以下的事情来纠正客户端与服务之间的步进
 1.关闭IIS的匿名访问
 2.改变客户端代码,设置一个安全证书(credential)给WebService
 Service1 obj = new Service1();
obj.Credentials =  System.Net.CredentialCache.DefaultCredentials;

调试器挂起
如果您的Web Service客户端代码运行在一个STA(Single Thread Apartment)模型下,并且它正

在等待一个异步调用的完成,如下代码所示:
Single Thread Apartment
Service1 obj = new Service1();
System.IAsyncResult ar = obj.BeginHelloWorld(new System.AsyncCallback

(Class1.Handle),obj);
while(ar.IsCompleted != true)
{
    System.Threading.Thread.Sleep(1000);
}
那 调试器就会挂起。导致这种挂起的原因是因为一个调试器组件被在这个调试中的您的代码锁定了,解决方案1就是改变您的代码使用事件进行线程同步或是使用 mutext.其他的解决方案就是注销csm.dll.第二种解决方案就是禁用因果调试。你可能需要手动附加到aspnet_wp.exe来调试Web Service

转载于:https://www.cnblogs.com/relang99/archive/2007/03/27/690031.html

关于使用VS.Net2003调试器出现的问题及相关解决方法[转]相关推荐

  1. 关于使用asp.net调试器出现的问题及相关解决方法

    下面的文档列举了很多关于使用asp.net调试器出现的问题 消息1:无法在服务器上启动调试(Unable to start debugging on the Web server) 消息2:您没有在服 ...

  2. jav中什么是组织java程序_Java程序的执行过程中用到一套JDK工具,其中javaprof.exe是指()。A.Java调试器B.Java剖析工具C.Jav...

    Java程序的执行过程中用到一套JDK工具,其中javaprof.exe是指().A.Java调试器B.Java剖析工具C.Jav 更多相关问题 "投资收益"账户属于(). A.损 ...

  3. Xcode 真机调试 iOS 应用的各种问题和解决方法

    process launch failed: Security 解决方法:打开手机设置->通用->设备管理->点击你的开发者账号->信任 ------------------- ...

  4. vs2015调试时不显示vector内容的解决方法

    vs2015调试时不显示vector内容的解决方法 参考文章: (1)vs2015调试时不显示vector内容的解决方法 (2)https://www.cnblogs.com/Joetao/artic ...

  5. vscode 调试.net core 2.0 输出乱码解决方法

    vscode 调试.net core 2.0 输出乱码解决方法 参考文章: (1)vscode 调试.net core 2.0 输出乱码解决方法 (2)https://www.cnblogs.com/ ...

  6. android程序突然崩溃如何调试,Android应用开发android 调试崩溃Unable to instantiate application的解决方法...

    本文将带你了解Android应用开发android 调试崩溃Unable to instantiate application的解决方法,希望本文对大家学Android有所帮助. 更新后Android ...

  7. 资源管理器占用CPU过高的解决方法

    有时我们在打开资源管理器的时候,发现cpu占用特别的高,这个是怎么回事呢?cpu过高不仅会导致电脑的运行速度变慢,还会加速硬件的使用年限,这种情况一般是后台运行的程序过多,具体的详情下面一起来看看吧. ...

  8. 计算机管理-设备管理器没有找到打印机,win7系统设备管理器没有ieee1284.4设备的解决方法...

    本文教程小编和大家分享win7系统设备管理器没有ieee1284.4设备的解决方法,win7系统设备管理器是一种管理工具,可用它来管理计算机上的设备,占据着比较重要的位置.有些用户发现win7系统设备 ...

  9. Android开发调试无法连接到夜神模拟器的解决方法

    Android开发调试无法连接到夜神模拟器的解决方法: 一般原因是adb的版本不一致造成的!!!!!换成一样的就可以了. 在网上看到的方法,特记录下来: 1.任务管理器里看下,adb.exe以及nox ...

  10. VS.NET2003调试出现的问题及相关解决方法

    .Net2003调试出现的问题及相关解决办法 转载于:https://www.cnblogs.com/hanguoji/archive/2008/10/22/1317004.html

最新文章

  1. python考试pass or fail_请问老师为什么我输入的数据,预期结果是pass,我的预期因该是“fail”...
  2. C#中汉字数字、汉字拼音的转换
  3. 为工厂分配用于公司间开票的销售范围
  4. CSS基础知识(display和visibility、overflow、文档流)
  5. leetcode 852. 山脉数组的峰顶索引(二分查找)
  6. Cookie、Session 和 Token区别
  7. C#.Net工作笔记015---C#中Decimal类型四舍五入_小数点截位
  8. kotlin和python哪个好_python替代品for一些java及kotlin功能(慎入啊慎入)
  9. Tcl Tutorial 笔记5 ·switch
  10. 【DL小结4】seq2seq与attention机制
  11. python自动化办公——python操作Excel、Word、PDF集合大全
  12. 调试工具之modscan使用介绍
  13. 在线图片托管服务imgur
  14. 供应链金融系统-强大的供应链风控体系为金融平台保驾护航
  15. POJ - Art Gallery(半平面交)
  16. NAB展会BOSMA博冠8K全系8K摄像机产品惊艳亮相
  17. python用turtle画七巧板_python之“七巧板”
  18. leetcode877
  19. 超级玩家联想Z5s来了1398元起 顶配12GB划时代超旗舰联想Z5 Pro GT 855版惊艳亮相
  20. 九零起航服务器(港澳服务器) 如何设置404页面

热门文章

  1. C#生成dll, VS或unity调用
  2. 指纹和人脸识别 AI 总结
  3. Atitit BLE 协议栈 艾提拉总结 目录 1. ——关于BLE的一些基本概念——
  4. Atitit java播放 wav MIXER 混响器编程 目录 1.1. MIXER 混响器编程 1 1.2. 得到系统中一共有多少个混音器设备: 1 1.3. 接口摘要 1 1.4. 调节音量
  5. Atitit 财政支出减少之道---------蹭银行与金融机构的补贴之道
  6. Atitit 边缘检测原理attilax总结
  7. atitit.javascript调用java in swt attilax 总结
  8. Atititjs javascript异常处理机制与java异常的转换.js exception process
  9. Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php
  10. atitit.编程语言 程序语言 的 工具性 和 材料性 双重性 and 语言无关性 本质