Visual Studio 利用附加进程调试DLL, WEB 调试DLL

多个工程开发。网页调试C#.DLL,本程序是一个C#的ACTIVEX工程,比较有创意吧,原理使用VC/BCB什么开发OCX。现在使用C#开发,调试时必要的的。

埋桩不是跟踪好,时间长,忘记了,现在重新复习。

步骤如下:

1)设置工程启动的工程为测试网页工程项目,设置启动页面。


步骤2):启动工程,系统将自动打开IE或者浏览器。

略。此处可以忽略。


步骤3) 选择在DLL设置断点,在VS2010中选择附加进程,附加当刚才启动的进程就是刚才的那个网页就可以命中断点了。



保证如下几条:

1:保证代码必须在DEBUG模式下,并且要生成全新的PDB文件保证代码和附加进程的一致。

2:附加的进程除了网页外,可以使用托管的窗口句柄,附加两个可能更好。

        例如进程1:为iexplorer网页,第二个为activex的弹出窗口进程(你可以用messagebox).

3:附加的进程有时代码无法正确判定,最好要设定类型:如果是SIiverlight,需要手动设定保证命中断点。

      设置如图:

       

      ===================================================================================

远程调试如下:转载

转摘:

当我们的项目为webservice时,调试不太方便,使用VS2008的附加进程可以轻松解决这一问题。

在VS2008的菜单栏依次点击“工具”---->“附加到进程”,在弹出的“附加到进程“窗口中,选中”显示所有用户进程“、”显示所有会话中的进程“,并在进程列表中找到进程名为”w3wp.exe“的进程,若找不到该进程:

1、确认web服务是否开启;

2、可以使用浏览器打开webservice,然后在“附加到进程“点击”刷新按钮“;

然后在”可用进程“列表中就可以找到”w3wp.exe“进程。


若附加进程后,调用web服务时,断点无法命中,则可尝试以下操作:

1、检查webservice项目编译方式是否为Debug模式,若为Release模式编译的项目,是无法调试的;

2、检查本机可用的web站点数目,若开启多个有可能出现附加的”w3wp.exe“进程并不是所要调试的进程服务。

3、如果上述两步确认无误,还不行,可以尝试本步骤。在”附加到进程“的窗口中默认使用”T-SQL、本机、托管“模式附加到进程,可尝试改为”Workflow“模式。一般是不需要进行该项操作的。


目前只发现这些解决办法,以后还有其他的,以后再补充。

Visual Studio 远程调试的步骤

使用场景

常用的主要是在部署的机器上程序出现问题, 而一般的部署机器上没有开发环境,此时需要准确的定位出错的原因时使用。

进行远程调试时,主机可以是任何支持 Visual Studio 的平台。远程计算机可以是 32 位或 64 位平台。

安装

远程计算机安装

Visual Studio的安装光盘上的/Remote Debugger目录下有x86和x64的版本

X86(rdbgsetup_x86.exe)用于调试 32位的程序

X64(rdbgsetup_x64.exe)用于调试64位的程序

默认安装在C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE下

 

rdbgwiz.exe是配置向导,主要是端口开放和服务配置

\Remote Debugger\x86\msvsmon.exe是x86版本的调试器

\Remote Debugger\x64\msvsmon.exe是x86- 64版本的调试器

这些程序可以直接双击启动,或从程序组启动

 

一般都是临时使用调试,因此不要作为服务运行,为了减少安全的配置,最好把防火墙临时关闭,调试结束后再开启

主机安装

安装有开发环境的机器(32位/64位操作系统均可)

 

远程机和主机都需要注意的地方

  • 本地安全策略:

控制面板、本地安全策略中:本地策略、安全选项、网络访问:本地帐户的共享和安全模型,确认是否已经设置为经典

  • 用户:

两个机器上有相同的帐号和密码以进行用户验证模式下的连接,一般用管理员用户可以避免很多的安全问题

使用

首先在远程机上启动“Visual Studio远程调试器”服务程序(根据软件的x86和x64模式启动对应的版本),设置正确的验证方式,具体参考下表

调试方式

设置

开发环境直接启动远程进程形式

  • 非托管程序: Remote with Windows authentication 、Remote with no authentication (Native only)两种形式可选
  • 托管程序:只能使用Remote with Windows authentication的连接,此时主机和远程机必须使用相同的帐号

 

具体步骤:

1、  将软件拷贝到远程机的约定目录(如c:\temp)

2、  在项目属性的Debug选项中设置远程目录为上面的约定目录(如c:\temp)、执行文件名和远程主机名

   (如Windows验证的地址: KK\Administrator@192.1.68.1.1(这个名字在“远程调试监视器”界面上可以看到)

无需验证的地址:192.1.68.1.1)

3、  开发工具启动Debug即可远程启动调试软件,设置断点等

进程附加形式

Remote with Windows authentication 、Remote with no authentication (Native only)两种形式可选

 

具体步骤:

1、  远程机上启动要调试的进程,如果是web站点,启动web页面就激活了w3wp.exe进程

2、  在主机上选择要调试的进程附加上

3、  设置断点即可调试

 

注意:

调试的过程中,需要注意

  • 代码文件路径和内容不要任意修改,否则调试时无法定位到具体的错误
  • 符号文件(*.pdb)和代码一定要一样,符号文件要拷贝到远程机上
分类:  工具

实现DLL直接用VC的新建程序向导,如果使用MFC DLL的话,生成对话框比较容易,然后将显示该对话框的代码封装成一个方法暴露出来(即设为公共访问);
    调用DLL比较简单的方法隐式调用,即引用头文件和之前生成的lib,然后就可以调用之前暴露的方法来显示对话框了。
    调试DLL一般也有两种办法,一种是调试宿主程序,跟踪到DLL的方法时,如果调试信息完整就可以跟进去,另外一种是直接调试DLL,即先打开宿主程序,然后在DLL所在(活动的)项目中点击调试-附加到进程,选择宿主程序,这样,当宿主程序运行到DLL流程时,DLL项目便能进行源代码跟踪了,比如其中的断点即能起作用了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值