Vc2008 activex控件IE 浏览器断点调试方法

合集下载

Visual Studio 2008基本调试技巧

Visual Studio 2008基本调试技巧
在调用函数的情况下,逐过程调试将执 行函数,然后跳过函数体。 F11逐语句调试 能够看到函数体内的代码逐句执行的情况。

Байду номын сангаас
加入WriteLine输出语句。
断言的使用

Debug类(命名空间System.Diagnostics) Debug.Assert(表达式,string str)
表达式:“测试条件” str:“提示消息” Debug.Assert(this.textBox1.Text.Length > 0, "输入值为空!"); 在断言中不要调用程序中的方法,避免与程序 发生功能联系。



小结



VS 2008 基本调试技巧 断点设置、调试输出、变量监视、调试堆栈、 逐过程调试、逐语句调试、使用WriteLine方法 来辅助输出调试信息。 断言Debug 测试是调试的入口,重心在于设计输入数据让 特定的问题出现的技巧。 调试不等于测试,调试重心在于修正语法错误 和逻辑错误的过程,重点在于定位问题。
VS 2008 基本调试技巧
断点设置

F9快速断点设置
调试输出

F5调试输出
变量监视
调用堆栈
逐过程调试


在断点处,如果希望继续执行程序,则 可按F5键,程序会运行到下一个断点的 代码行处。 如果要一步步查看程序的执行情况,以 及变量、属性值等,则可按F10键(逐过 程调试的快捷键)。
逐语句调试

VC调试方法大全

VC调试方法大全

一、调试基础 调试快捷键F5:开始调试Shift+F5:停止调试F10 : 调试到下一句,这里是单步跟踪 F11 :调试到下一句,跟进函数内部跟踪调试1、尽量使用快捷键时行调试2、观察调试信息3、高级中断设置异常调试 重试— > 取消— > 调试 函数堆栈,用variables 或者call stack 窗口Release 调试经常测试你的Debug 和Release 版本不要移除调试代码,如用 ASSERT, TRACE 等。

初始化变量,特别是全局变量, malloc 的内存,new 的内存当你移除某个资源时,确保你移除了所有跟这个资源相关的申明(主要是在 resouce.h 文中)使用3或者4级的警告级编译你的代码,并确保没有警告, Project->setting->c/c++->warninglevel (版是项目-> 属性->C/C++-> 常规— > 警告等级)6、—debug 改成 NDEBUG 进行调试,project->setting->C/C++->Preprocessordefinitions >属性->C/C++->预处理器-> 预处理定义)(这里是debug 和Release 编译的重要不同之一)VC 调试方法大全VC 调试方法大全Shift+F11: 从当前函数中跳出Ctrl+F10: 调试到光标所在位置 F9: 设置(取消)断点 Alt+F9:高级断点设置中文(中文版是项目-7、在 Release 中调试源代码,project->setting->C/C++->debug info 选择ProgramDataBase (中文版是项目-> 属性->C/C++-> 常规-> 调试信息格式-> 用于编辑并继续"的程序数据库),Project — >setting->link 选上Generate debug info ( 中文版是项目-> 属性-> 链接器-> 调试-> 生成调试信息)8、走读代码,特别关注堆栈和指针二、TRACE 宏 当选择了 Debug 目标,并且afxTraceEnabled 变量被置为TRUE 时,TRACE 宏也就随之被激活了。

activex组件的调用方法

activex组件的调用方法

activex组件的调用方法
ActiveX组件是一种可重用的二进制代码,可以在不同的应用程序中使用。

使用ActiveX组件可以提高应用程序的功能和性能。

调用ActiveX组件可以通过以下步骤实现:
1. 在应用程序中添加对ActiveX组件的引用。

2. 创建ActiveX组件的对象。

3. 调用ActiveX组件的方法和属性。

在Visual Basic中,可以使用以下代码来调用ActiveX组件:
' 添加对ActiveX组件的引用
' 如果ActiveX组件位于COM服务器上,必须注册COM服务器
Dim obj As New ComponentName
' 创建ActiveX组件的对象
obj.MethodName
' 调用ActiveX组件的方法和属性
在C#中,可以使用以下代码来调用ActiveX组件:
// 添加对ActiveX组件的引用
// 如果ActiveX组件位于COM服务器上,必须注册COM服务器
ComponentName obj = new ComponentName();
// 创建ActiveX组件的对象
obj.MethodName();
// 调用ActiveX组件的方法和属性
需要注意的是,调用ActiveX组件时可能会遇到版本兼容性问题。

为了避免这种问题,应该确保ActiveX组件的版本与应用程序的版本兼容。

如果需要升级ActiveX组件的版本,应该进行充分的测试和验证,确保没有任何兼容性问题。

VS2008创建ActiveX控件

VS2008创建ActiveX控件

VS2008创建ActiveX控件VS2008创建ActiveX控件2010年03月15日星期一 16:12VS2008创建ActiveX控件编写代码前的设置打开AssemblyInfo.cs修改程序集信息。

引用System.Security命名空间,并添加[assembly : AllowPartiallyTrustedCallers()]安全声明修改[assembly: ComVisible(false)]为[assembly: ComVisible(true)]使程序集Com可见。

为Com Interop注册。

右键demoActiveX项目属性,在“生成”选项卡里将“为Com Interop注册”打上勾即可。

编写代码using System;using System.Collections.Generic;using ponentModel;using System.Drawing;using System.Data;using System.Linq;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices; // 后添加的名称空间namespace demoActiveX{//用该Guid初始化demoActiveX,该Guid即是我们要在Web 页面下引用该ActiveX的CLSID[Guid("E5FD041B-8250-4cbc-B662-A73FC7988FB5")]public partial class demoControl : UserControl{public demoControl(){InitializeComponent();}public void Test(){MessageBox.Show("你输入的内容为:" + this.textBox1.T ext);}// 实现IObjectSafety接口,把ActiveX控件标记为安全的public void GetInterfacceSafyOptions(Int32 riid, out Int32 pdwSupportedOptions, out Int32 pdwEnabledOptions) {// TODO: 添加 demoControl.GetInterfacceSafyOptions 实现pdwSupportedOptions = 1;pdwEnabledOptions = 2;}public void SetInterfaceSafetyOptions(Int32 riid, Int32 dwOptionsSetMask, Int32 dwEnabledOptions){// TODO: 添加demoControl.SetInterfaceSafetyOptions 实现}//IObjectSafety 是一个接口,它可将其功能显露给Internet Explorer的“设置脚本安全性”和“设置初始化安全性”安全特性[Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]public interface IObjectSafety{// methodsvoid GetInterfacceSafyOptions(System.Int32 riid,out System.Int32 pdwSupportedOptions,out System.Int32 pdwEnabledOptions);void SetInterfaceSafetyOptions(System.Int32 riid,System.Int32 dwOptionsSetMask,System.Int32 dwEnabledOptions);}private void button1_Click(object sender, EventArgs e){textBox1.Text = "T est Only!";}}}编译,便可以得到一个dll文件。

VS2008无法断点调试程序

VS2008无法断点调试程序
VS2008按F5无法在断点处停留,主要有以下几种情况:
1、生成方式是 Release 不是Debug。
2、调试时到“附加到进程”菜单里看有没有“aspnet_wp.exe”的进程,如果没有,添加。
3、控件的事件丢失。这个比较常见。
4、右键解决方案的属性里,看生成项里的“生成调试信息”那里是不是FALSE,如果是,改成TRUE。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaMSV1_0
3. 右击 MSV1_0 , 指向 新建 , 然后再单击 多字符串值 。
4. 类型 BackConnectionHostNames然后按 Enter。
5. 右击 BackConnectionHostNames , 然后单击 修改 。
5、想要调试的代码行根本不能调试。这个比较少见。
6、 在vs2008中,工具-> 选项->调试->常规中有个选项,要求源文件与原始版本完全一致,vs2008默认的是选中的,取消试试。
7、还有一种修改注册表的方法
解决办法
方法 1: 禁用环回检查
请遵循以下步骤:1. 单击 开始 , 单击 运行 , 类型 regedit然后单击 确定 。
2. 中注册表编辑器, 找到并单击以下注册表项:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa
3. 右击 Lsa , 指向 新建 , 然后单击 DWORD 值 。
4. 类型 DisableLoopbackCheck然后按 Enter。
5. 右击 DisableLoopbackCheck , 然后单击 修改 。

VS2008中使用ACTIVEX控件

VS2008中使用ACTIVEX控件

VS2008中使用ACTIVEX控件VS2005和2008中的控件的使用还真的是有点点的麻烦,VC6直接右键Insert ActiveX就搞定的事情,在VS2005中需要分成2步做。

首先,把TeeChart8.ocx放在某个目录下。

(或者在使用前现在系统中注册.ocx文件 regsvr32 teechart.ocx 卸载时加参数 -u)然后,在Visual Studio 2005里面新建基于TypeLib的MFC类,通过文件浏览找到控件所在的位置(或者在下拉列表中找TeeChart v8)。

这时就可以看到该控件引入的一大堆接口,除了ITChart,把其它所有的都加进来,然后确认。

这样就新建了一大堆的COleDispathDriver的类,都在*.h文件里面。

然后,在Visual Studio 2005里面新建基于ActiveX控件的MFC 类,通过文件浏览找到控件所在位置,这时可以看到该控件只有一个接口——ITChart,把它加进来,生成了CTChart的类,是基于CWnd 的。

这样就可以通过CTChart::Create(NULL,NULL,...(后面记不清了)动态创建控件。

这里要注意的是Create里面的字符串变量的使用,我之前一直用“”代替NULL,结果在程序运行时总报COLEException,说是DISP_E_MEMBERNOTFOUND,我找了很久很久才发现原来是这个原因。

(如果不需要动态的创建控件的话,可以在注册了控件之后,直接把.ocx文件拖动到工具箱中,或者在工具箱中选择com组建,把teechart v8 添加进来)。

创建该控件后就可以通过CTChart::AddSeries来添加曲线了,呵呵。

不过先别得意,通过这种方式创建的所有的类都是相互独立的,以前的CTChart::Series函数返回值是CSeries的变量,可以直接进行AddXY的操作,现在只能手工地将Series函数返回的LPDISPATCH (不知道写对没)变量用(CSeries)CTChart::Series(n)转换为CSeries的对象,然后进行画图啊什么的操作。

如何在程序编辑器中进行代码调试和断点设置

如何在程序编辑器中进行代码调试和断点设置

如何在程序编辑器中进行代码调试和断点设置在软件开发过程中,代码调试是一个非常重要的环节。

通过调试和断点设置,我们可以逐行执行代码、观察变量的值、分析程序的运行状况,从而帮助我们快速找出错误和调优代码。

在本文中,我们将介绍如何在程序编辑器中进行代码调试和断点设置。

1. 选择合适的程序编辑器首先,我们需要选择一个功能强大的程序编辑器。

常见的选择包括Visual Studio Code、PyCharm、Eclipse等。

不同的编辑器针对不同的编程语言提供了相应的调试工具和插件,我们可以根据自己的需求选择合适的编辑器。

2. 创建调试配置文件在开始调试之前,我们需要创建一个调试配置文件。

该文件描述了调试的目标程序和相关的调试选项。

编辑器通常会提供一种简单的界面来创建和管理调试配置文件。

我们可以选择我们要调试的程序和调试的环境,如调试Python脚本、调试C++程序等。

此外,我们还可以设置各种调试选项,如启用断点、设置输出路径等。

3. 设置断点设置断点是代码调试的核心步骤之一。

断点是我们在程序中设置的一个标记,当程序执行到该位置时会暂停运行,以便我们观察程序的状态和执行情况。

在编辑器中,我们可以通过单击代码行的左侧或使用特定的快捷键来设置断点。

设置断点后,我们可以通过调试器的界面来控制程序的执行,如单步执行、跳过函数等。

4. 启动调试设置好断点后,我们就可以启动调试了。

在编辑器的调试界面中,我们可以选择要调试的程序和调试的环境,并可以设置一些运行时参数。

启动调试后,程序会按照我们的配置开始运行,当程序执行到断点时会暂停运行。

5. 调试工具的使用在程序暂停运行时,我们可以使用调试器提供的工具来观察程序的状态和执行情况。

常见的调试工具包括查看变量的值、观察函数调用栈、查看程序输出等。

通过这些工具,我们可以快速定位错误并进行调试。

6. 单步执行单步执行是调试中常用的功能之一。

在程序暂停运行时,我们可以逐行执行代码,观察每一行代码的执行情况。

VC调试技巧之断点

VC调试技巧之断点
例如:在Main.c的第100行设一个位置断点,而test1.dll和test2.dll都使用了该行,但只想在test1.dll的调用中启动断点,具体用法如图6
图6
图3
当MMI_fixed_matrix_menu.highlighted_row的值发生改变时,就会弹出警告框(如图4)并把程序停到改变该变量值的地方(如图5)
图4
图5
若想知道变量是在何处被改为某个特定值,此时可将断点条件改为“MMI_fixed_matrix_menu.highlighted_row==0”,当条件满足时,断点启动。
此外,还可以利用数据断点跟踪数组的越界导致覆盖其他变量等十分棘手的问题。
3.消息断点(MESSAGE BREAKPOINT)
该断点用得很少,且一般可以用上述两种断点替代。
4.高级断点
高级断点的语法由两部分组成:1.上下文(CONTEXT)-----即函数,源文件,可执行文件
2.变量,表达式或绝对位置
int tmp = getValue();// A行
res /= tmp;//B行
}
return res;
}
运行代码,发现程序崩溃于B行,原因是tmp的值为0了,此时就需要在A行设置一个断点,然后进入getValue函数内部中查看运行状态。由于断点在循环体内,可能需狂按F5几百次。使用位置断点的断点跳跃就可以大大减少体力劳动。
VC调试技巧之断点
1.位置断点(LOCATION BREAKPOINT)
在代码中按F9设置一个位置断点,然后按F5运行,是最常用的断点方式,但是遇到如下代码时,就十分头疼了。
int test(void)
{
int i = 0, res=99999999999;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Vc2008 activex控件IE 浏览器断点调试方法
用VC2008开发了一个OCX控件,调试时,可以用测试容器进行断点调试,但是使用IE 浏览器测试时,不能进入断点调试,但是网页时有输出的,说明OCX控件的调用时正常的,请问不能进入断点调试时什么原因呢?
1.
2.---------------------------------------
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"TabProcGrowth"=dword:00000000
--------------------------------------------------------
把------------------之间的文字保存成 1.reg,双击1.reg,导入到注册表里,就可以调试了
原理是ie8 默认是多进程工作的,通过修改注册表改为单进程工作。

多进程的时候,启动的ie进程和加载要调试的ocx的ie进程不是一个进程,所以不能调试。

相关文档
最新文档