vs2005调试技巧集合
visualstudio调试方法
visualstudio调试⽅法最近碰巧读了Ivan Shcherbakov写的⼀篇⽂章,《》。
这篇⽂章只介绍了⼀些有关Visual Studio的基本调试技巧,但是还有其他⼀些同样有⽤的技巧。
我整理了⼀些Visual Studio(⾄少在VS 2008下)原⽣开发的调试技巧。
(如果你是⼯作在托管代码下,调试器会有更多的特性,在CodeProject中有介绍它们的⽂章),下⾯是我的整理的⼀些技巧:1. 异常中断 | Break on Exception2. Watch窗⼝中的伪变量 | Pseudo-variables in Watch Windows3. 符号越界后查看堆对象 |4. 查看数组的值5. 避免进⼊不必要的函数6. 从代码启动调试器 | Launch the debugger from code7. 在Output窗⼝打印8. 隔离内存泄漏9. 调试发⾏版 | Debug the Release Build10. 远程调试11. 数据断点12. 线程重命名13. 给指定线程设置断点14.(粗略)估算执⾏时间15. 数字格式化16. (内存)数据格式化17.系统DLL中断18.加载符号表19. 监测MFC中的内存泄漏20. 调试ATL技巧1:异常中断在处理被调⽤之前,异常发⽣时可以启动调试器进⾏中断,可以让你在异常发⽣后⽴即调试程序。
操作调⽤栈便于你去查找异常发⽣的根本原因。
Vistual Studio允许你去指定想要中断的异常类型或者特殊异常。
选择菜单Debug>Exceptions弹出对话框,你可以指定原⽣的(或者托管的)异常,除了调试器⾃带的⼀些默认异常,你还可以添加⾃⼰的⾃定义异常。
下⾯是⼀个std::exception 异常抛出时调试器中断的例⼦。
更多阅读:1.2.技巧2:Watch窗⼝中的伪变量Watch窗⼝或QuickWatch对话框提供⼀些特定的(调试器可识别的)变量,被称为伪变量。
VS2005下的64位编程与移植
VS2005下的64位编程与移植VS2005下的64位编程与移植Mar 18th, 2012 | Comments最近有个项目需要将32位下的代码移植到64位下,之前没有做过这方面的工作,特别向同事请教了这方面的知识,在此记录下来。
VS2005下64位编程环境1.VS2005安装时要勾选X64 Compilers and Tools,如果安装时忘记了,则可以重新打开VS2005安装程序来添加;2.VS2005X64编程环境设置3.在VS2005的Build菜单下选择Configuration Management;4.在Configuration Management对话框中的Active solution platform下选择New;5.在New Solution Platform中的Type or select the new platform下选择x64,OK。
对于没有汇编的程序,上述设置就可以了。
但如果代码中有汇编代码,则还需要Project下的Custom Build Rules中切换到MASM64 Bulid Rule。
缺省情况下,VS2005没有提供到MASM64 Bulid Rule,需要将原来的masm.rules(在C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults文件夹下)文件拷贝一份,重新命名为masm64.rules,并在VS2005中修改rule中的ml.exe为ml64.exe 即可。
上面设置好之后,就可以在Win32和X64平台间自由切换,但要注意的是,切换的时候也需要将Custom Build Rules切换到相应的平台下。
VS2005下64位编程的注意事项•X64平台下,不支持内联汇编,必须将汇编代码提取到独立的.asm文件中去;•指针不再是32位,而是64位,汇编代码中涉及32位寄存器间接寻址的,移植时需要修改;•32位的寄存器被扩展为64位,又增加了一些新的寄存器;•函数参数的传递与32位下汇编不再相同,而是前4个参数分别通过RCX, RDX, R8, R9来传递,其他的参数通过堆栈来传递;上述的应该是最基本的,要在64位平台中进行编程,还需要了解更多的这方面的知识。
VS应用环境的调试、配置和测试解析
开发环境的配置
注:DirectShow的配置方法和之前OpenCV的配置方法类似, 为了简洁,就不截图了。另外一点,就是在目录
F:\Program Files\DXSDK\Samples\C++\DirectShow\BaseClasses\
下是没有Debug和Release子文件夹的,需要编译一个程序 才能生成。但是由于DirectShow版本和VS版本的问题导致 这个程序的编译产生很多错误,比较难调试。所以对这个 编译工作暂时不作要求,在附件中我将把我编译好的库给 大家,只要将它们拷贝到
选择项目test1属性在弹出的test1属性页中展开左边属性列表中的配置属性链接器输入在右边的附加依赖项中填写几个库文件的名opencvcalib3d242dlibopencvcontrib242dlibopencvcore242dlibopencvfeatures2d242dlibopencvflann242dlibopencvgpu242dlibopencvhighgui242dlibopencvimgproc242dlibopencvlegacy242dlibopencvml242dlibopencvobjdetect242dlibopencvts242dlibopencvvideo242dlib注意库文件名字之间用空格隔开
第一个例子程序
该程序的效果是,从硬盘中加载指定的图 像文件,并在窗口中显示出来。如下图所 示:
第一个例子程序
第二个例子程序
下面将通过第二个简单的例子程序,介绍 如何编写基于对话框的MFC程序。
(1)打开VS2008编程环境。选择“文件”->“新建”->“项 目”,在弹出的“新建项目”对话框中,展开左侧树形列 表“项目类型”->“Visual C++”->“MFC”,在右侧的“Visual Studio 已安装的模板”栏中选择“MFC 应用程序”。填写 项目名称,这里为Test2。点击“确定”按钮;见下图:
VS2005开发驱动DDK配置
一准备DDK版本:Windows DDK 3790IDE:Visual Studio 2005二用DDK环境编译驱动这种编译驱动的办法是DDK文档中所提倡的办法。
此种方法需要编写一个编译脚本文件,在这个脚本中描述了DDK驱动程序的源文件、用到的lib文件和include路径名、编译输出的目录和文件名等信息。
编写此类脚本对于Windows程序员可能比较陌生,尤其是当源文件较多时,编写脚本文件可能显得更如麻烦。
在源程序的相同目录下创建两个文件makefile和Sources,这两个文件都是文本文件,内容如下。
Makefile这个文件不要修改## DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source# file to this component. This file merely indirects to the real make file# that is shared by all the driver components of the Windows NT DDK#!INCLUDE $(NTMAKEENV)\makefile.defSources这个文件参考实际情况修改!if "$(DDK_TARGET_OS)"=="Win2K"TARGETNAME=Passthru_2000!elseif "$(DDK_TARGET_OS)"=="WinXP"TARGETNAME= Passthru _XP!elseif "$(DDK_TARGET_OS)"=="WinNET"TARGETNAME= Passthru _03Server!endifTARGETPATH=objTARGETTYPE=DRIVERC_DEFINES=$(C_DEFINES) -DNDIS_MINIPORT_DRIVER -DNDIS_WDM=1!if !defined(DDK_TARGET_OS) || "$(DDK_TARGET_OS)"=="Win2K"## The driver is built in the Win2K build environment#C_DEFINES=$(C_DEFINES) -DNDIS40_MINIPORT=1C_DEFINES=$(C_DEFINES) -DNDIS40=1!else## The driver is built in the XP or .NET build environment# So let us build NDIS 5.1 version.#C_DEFINES=$(C_DEFINES) -DNDIS51_MINIPORT=1C_DEFINES=$(C_DEFINES) -DNDIS51=1!endif# Uncomment the following to build for Win98/SE/WinMe# This causes several APIs that are not present in Win9X to be# ifdef'ed out.# C_DEFINES=$(C_DEFINES) -DWIN9X=1PRECOMPILED_INCLUDE=precomp.hPRECOMPILED_PCH=precomp.pchPRECOMPILED_OBJ=precomp.obj!if !defined(DDK_TARGET_OS) || "$(DDK_TARGET_OS)"=="Win2K"TARGETLIBS=$(DDK_LIB_PATH)\ndis.lib \$(DDK_LIB_PATH)\ntstrsafe.lib!elseTARGETLIBS=$(DDK_LIB_PATH)\ndis.lib!endifUSE_MAPSYM=1INCLUDES=SOURCES=\miniport.c \passthru.c \passthru.rc \protocol.c \PTEXTEND.C \filter.c前7行说明此驱动的名称,这里用到了宏来控制不同操作系统版本的编译所需的文件,$(DDK_TARGET_OS)是从外面的命令行传递进来的。
vs2005入门使用
vs2005的初步使用今天安装了VS2005,也在网上查了一下,很乱,我就帮大家整理下,大家看下,基本的使用会没有什么问题的!不得不说VS2005很强大,但如何使用?这点很重要……呵呵!首先,我不知道什么创建WIN32控制台程序和WIN32应用程序。
感觉有点痛苦。
这里教下如何创建WIN32控制台程序和如果创建WIN32应用程序。
先说WIN32控制台程序1:文件 -> 新建 -> 项目2:“输入名称"是输入工程的名称,不必要加上后缀。
按“确定”后会出现如下图:但不要选择“完成”而是要选择“下一步”。
然后如下图:这里要选择“空项目”,应该说最好是选择“空项目”。
最后按“完成”。
这时候在“解决方案”上看到源文件,如下图:右击“源文件”后选择“添加”-> “新建项”。
然后弹出一个对话框,如下图:照上去的选择,然后输入文件名。
这个文件名就要加上后缀了。
想写C程序就加上C后缀,写C++程序后缀加不加都行,默认是.cpp后缀。
最后就把传说中的程序写上去。
就是HELLO WORLD程序。
然后运行,可报出无法找到msvcr80d.dll文件。
这时候只能去GOOGLE了。
下载一个msvcr80d.dll文件放到C:\WINDOW\SYSTEM32\目录下。
下载msvcr80d.dll文件后,要想运行程序,就按 工具 -> 开始执行(不调试),也就是Ctrl + F5。
OK,最后输出。
如下图:大家有没有发现最左边“源文件”那里虽然后缀是.C。
但它们的图片还是C++。
对于这点不要觉得奇怪。
以前在群里听人聊起的时候听说过,没什么大不了的事。
现在我也不记得了。
最后,OK,一个在VS2005下的WIN32程序运行完毕。
完毕是完毕了。
可大家有没有发觉我的代码比你们的漂亮多了。
主要是我下载了VS2005助手。
VS2005里有智能,但我不知道什么设置。
最后我去下载个和VC6一样的小助手。
只不过用在VS2005中。
vs 2005
Visual Studio 2005Visual Studio 2005 简介Visual Studio 是一套完整的开发工具集,用于生成 Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。
Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。
另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。
Visual C++ 2005Microsoft Visual C++ 2005 提供了强大和灵活的开发环境,可用于创建基于 Microsoft Windows 和基于 Microsoft .NET 的应用程序。
它既可以用作集成开发系统,也可以用作一组独立的工具。
Visual C++ 包含下列组件:Visual C++ 2005 编译器工具。
该编译器包含一些新功能,支持面向虚拟计算机平台(如公共语言运行库 (CLR))的开发人员。
现在已经有面向 x64 和 Itanium 的编译器。
该编译器仍支持直接面向 x86 计算机,优化了针对这两种平台的性能。
z Visual C++ 2005 库。
其中包括行业标准活动模板库 (ATL)、Microsoft 基础类 (MFC) 库,以及各种标准库,如标准 C++ 库和 C 运行时库 (CRT)(该库已得到扩展,可以向引起安全问题的已知函数提供安全增强替代项)。
新增的库是 C++ 支持库,其设计意图在于简化面向 CLR 的程序。
z Visual C++ 2005 开发环境。
虽然可以从命令行使用 C++ 编译器工具和库,但开发环境却提供了对项目管理与配置(包括对大型项目的更好支持)、源代码编辑、源代码浏览和调试工具的强大支持。
VS2005远程调试说明
1.说明
本机:VS2005运行(Windows XP)
远程端:应用程序运行(本文以Window XPe为例)
2. 准备
(1) 拷贝本机" \Microsoft Visual Studio 8\Common7\IDE\Remote Debugger\x86"文件夹到远程端。
(2) 远程端:“本地安全策略-安全选项-网络访问:本地帐户的共享和安全模式”改为:经典-本地用户以自己的身份验证。
(XPe 中该选项没找到,没有设置)
(3) 本地:打开待调试工程,在VS2005菜单中,打开“项目”-“属性”,左侧列表选择“调试”,右侧设置选项如下图所示:
(其中,远程命令为远程端应用程序的绝对路径;远程服务器名称设置为远程端的IP。
)
3. 开始调试
(1) 远程端:启动远程调试监视器
方法1:启动x86文件夹下msvsmon.exe程序,从“工具”-“选项”中将“身份验证模式”改为“无身份验证,允许任何用户进行调试”,将“最大空闲时间”设置为90000000000000(无穷大)。
配置界面如下:
方法2:使用命令行:“msvsmon.exe /noauth /anyuser /nosecuritywarn”。
(2) 远程端:将本地生成的应用程序拷贝到远程端,远程端应用程序的路径为1(3)中的远程命令。
(3) 本地:打开待调试工程,按F5进行调试运行。
使用VC2005一些问题及解决方案(一)
使用VC2005一些问题及解决方案(一)首先是我使用VC2005在不通阶段的不通感受:刚开始安装VS2005时候感觉:真是大啊!装了我一个上午!!而且运行个VC有时能耗我好大的内存。
刚使用VC2005时候的感受:界面挺不错,貌似功能更强大,对C++标准支持的很好,还可以用我最喜欢的Comic Sans MS字体,还支持代码收缩等等。
虽然比较慢,但是不像VC6. 0那样老是出现编译死机的情况。
开始用VC2005学习写东西的时候的感受:实在没有6.0好用,限制太多,很多地方跟VC6. 0不一样,而且很多功能似乎都找不到了。
还不如6.0方便。
使用一段时间的感受:虽然经常遇到问题但是都是有很好的解决方案的,而且相对6.0,2005的BUG少很多,总体来说如果机器配置还算可以的话,用2005是挺不错的。
下面就是我使用VC2005遇到的以及解决了的问题:VC遇到的以及解决了的问题1,对于Radio控件如何正确设置属性Group?首先要确保几个Radio控件的Tab是按顺序的(可以在对话框编辑器中按Ctrl+D将三个控件T ABORDER设置在一起)。
然后对第一个Radio控件选择Group属性,其他的不用选。
对第一个控件添加关联变量int m_test,并且设置初值-1,则当我们点击第一个控件m_test值是0,点击第二个m_test值是1....依此类推。
2,VC2005中添加虚函数问题:在VC6.0中可以对类右键添加虚函数,在VC2005中需要在类属性中点击一个重写按钮,在那里添加虚函数。
3,VC2005动态添加右键菜单问题:在VC6.0中我们可以在Project->Add To Project->Component and Control中添加组件,如添加Pop-up Menu可以实现添加右键快捷菜单的功能。
但是在VC2005中我们没有这个功能,但是我们可以手动自己添加,也不是很复杂。
步骤如下(假设工程是一般MFC视图工程命名Menu):1,自己添加一个Menu资源,例如命名为IDR_MENU1,编辑之。
VS常见调试错误信息
1.检测到有潜在危险的 Request.Form 值2.“在没有任何数据时进行无效的读取尝试”解决办法3.数据为空。
不能对空值调用此方法或属性。
4.阅读器关闭时 FieldCount 的尝试无效5.未能映射路径6.Unreachable code detected7.索引超出范围。
必须为非负值并小于集合大小8.数据为空。
不能对空值调用此方法或属性9.数据源不支持服务器端的数据分页10.对象名'***** '无效11.在建立与服务器的连接时出错。
在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。
(provider: 命名管道提供程序,error: 40 - 无法打开到 SQL Server 的连接) 12.SqlDateTime 溢出。
必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间。
13.出现-------表示“属性”,此处应为“方法”14.未能从程序集“DAL, Version=1.0.0.0, Culture=neutral,PublicKeyToken=null”中加载类型“DAL.SqlHelper”。
15.为过程或函数指定的参数太多16.无法启动调试,绑定句柄无效17.Unable to debugging on the web server.Debug failed because integrated windows authentication is not enable18.Automation 操作中文件名或类名未找到: 'RegExp'19.System.NullReferenceException: 未将对象引用设置到对象的实例。
20.错误 1718。
文件被数字签名策略拒绝(安装vs2005sp1时)21.vs2005不能从源文件模式切换到视图模式22.Validation of viewstate MAC failed23.Automation server can't create object"(Automation 服务器不能创建对)24.包加载失败25.Error spawning 'cmd.exe'.26.尝试读取或写入受保护的内存27.无法在证书存储区中找到清单签名证书28.该项目中不存在目标“ResolveKeySource”。
在VS2005上编写、运行、调试C语言程序
在VS2005上编写、运行、调试C语言程序目录前言:关于C/C++编译器的简单介绍.............................- 2 - 1.编辑、编译与运行.........................................- 3 - 2.调试技术.................................................- 8 - 设置断点.................................................- 9 - 调试运行.................................................- 9 - 快速监视................................................- 10 - 3.小结....................................................- 13 - 附:VS2005快捷键大全期.....................................- 13 -前言:关于C/C++编译器的简单介绍Turbo C 2.0发布于1989年,对历史并不太长而发展却神速的IT业来说,确实是古董级的软件了。
但它几乎是最后一个专门为C语言设计的开发环境,具备学习C语言的一切条件,没有任何非C语言的东西干扰初学者,所以一直被各大高校的C语言课堂采用。
C++的发展使C++的开发环境大行其道。
因为C++几乎完全兼容C语言,两者无论编译器还是编辑器、调试器都可以用同一套程序实现,而且C++共享C的库函数,很多软件还是用两者混合编程实现,所以基本所有的C++环境都同时支持C语言。
Dev-c++是Windows平台下C++ IDE开发环境,属于共享软件。
界面亲切优雅,size也不大,其后续版有中文语言支持,无需汉化。
VSS2005客户端操作手册
VSS的简单工作原理●Microsoft的VSS 将所有的项目源文件(包括各种文件类型)以特有的方式存入数据库。
开发组的成员不能对该数据库中的文件进行直接的修改,而是由该版本管理器将该项目的源程序或是子项目的源程序拷贝到各个成员自己的工作目录下进行调试和修改,然后将修改后的项目文件作Checkin提交给VSS,由它进行综合更新。
●用户可以根据需要随时快速有效地共享文件。
文件一旦被添加进VSS,它的每次改动都会被记录下来,用户可以恢复文件的早期版本,项目组的其他成员也可以看到有关文档的最新版本,并对它们进行修改,VSS也同样会将新的改动记录下来。
客户端基本操作●1、创建项目●2、添加文件/文件夹●3、签入/签出,撤销签出,查看文件●4、创建工作目录●5、修改/编辑文件●6、移动文件/文件夹●7、共享文件/文件夹●8、拆分文件●9、删除/恢复文件●10、给文件打标签(lable)●11、获取历史版本●12、获取最新版本●13 、修改密码●14、打开、关闭数据库客户端基本操作1●创建项目(File->Create Project)a.选中要创建新文件夹的项目(上级文件夹)b.在file菜单中选中creat project;c.写入要添加的文件夹的名称,同时也可以在comment栏中为新建的文件夹添加备注;d.点击OK。
客户端基本操作2●添加文件1.add命令添加文件a.选中你要添加文件的文件夹;b.在fil菜单中选中add files;c.在文件列表中选中要添加的文件;如果要添加多个文件,可以使用CTRL键或SHIFT键,同时选中多个文件;d.点击add,同时可以在comment栏为你添加的文件夹做一个简单备注;e.点击OK。
●添加文件夹a.选中你要添加文件夹的项目(上级文件夹);b.在file菜单中选中add files;c.在文件夹列表中选中要添加的文件夹;d.点击add,同时可以在comment栏为你添加的文件夹做一个简单备注;e.如果你要连同子文件夹一起添加,选择Recursive;f.点击OK。
VSS2005使用手册(中文版)
VSS使用手册1. 安装客户端:首先我们在我们自己的机器上装好SourceSafe的客户端。
2. 设置用户名、密码和数据库路径:安装完客户端后,打开SourceSafe会提示输入:用户名、SourceSafe密码、数据库路径等信息3. 登录后,会出现4. 设置存放路径:点击你要下载的路径右击,选择“设置工作目录”5. 下载文件:选择完要存放的目录后,选择要下载的文件,右击选择“获取最新版本”6. 添加文件(签入文件):在VS2008里面新增你所在新增的文件(VssText.txt),右击“签入”,同进也将工程文件(XXX.csproj)一起签入,也可以选中“XXX”右击,选择“查看挂起的签入”可以看到你所有签出未签入的文件列表,然后将您要签入的文件选中后,点击“签入”就可以了7. 删除文件:选择所以删除的文件,右击选择“删除”,在删除的过程中会有相关提示,根据自己的需要选择,最后将工文件程“XXX.csproj”签入即可。
8. 签出文件(和查看文件“签出者”):设置签出时是否提示(如下图:)菜单路径:“工具->选项”,选择您要签出的文件右击“签出以进行编辑”;如果想回到原来的版本(撤消操作),右击“撤消签出”即可;如果在签出的时候有提示:“签出期间发生错误或用户取消。
某些文件可能尚未签出。
(文件被其他用户以独占方式签出)”时,则表示此文件已经被其他人签出,可以在工具栏右击选择“源代码管理”,选择“SourceSafe 属性”,在签出状态Tab 页,可以看到“签出者”9. 查看历史记录和查看版本之间的差异:选中您要查看的文件,右击“查看历史记录”,可看到这个文件的历史记录列表;查看版本之间的差异:按住“Ctrl”键,选中要对比的两个版本,点击“差异”,就可以看到两个版本差异的数据,。
VSS2005安装教程和使用教程
VSS配置安装教程一、Vss安装第一步:将Visual SourceSafe2005安装包解压。
第二步:找到setup.exe双击运行。
第三步:在弹出的界面复选框中选中I accept the terms of the License Agreement,表示同意VSS的用户协议。
此处序列号已经默认填写好,直接点击Next即可。
第四步:选择安装特征,其中分为Default(默认)、Full(完整)和Custom(自定义)安装,一般我们选择Default默认安装即可。
在窗口右边点击Browse选择安装路径,然后点击Install。
第五步:这一步程序会自动运行安装,只需要等待。
第六步:然后出现下图所示,安装成功,选Finish完成安装。
二、服务器端配置(Vss2005)VSS administrator是一个服务器端的工具,用于管理VSS数据库、用户、组织属性、权限等。
1、创建DataBase步骤第一步:在Visual SourceSafe安装目录下,选择ssadmin运行服务器端并登陆,如下图。
第二步:在创建路径前,先你的电脑的盘下新建一个文件夹(database),并把文件夹设置为共享,而且必须将权限设成允许更改和读取,共享时设置为“everyone”并“添加”。
可以设置为“完全控制”看看。
第三步:选择File→New Databae,创建VSS数据库database,直接点击“下一步”。
第四步:点击Browse找到刚刚新建的文件夹database,点击“下一步”,如下图。
第五步:这一步是更改数据连接名,一般保持默认的文件夹名就好,直接点击“下一步”。
第六步:点击完成OK。
2、新建用户第一步:点击Tools→options,给用户登陆服务器数据库database权限和分配权限。
给用户配置权限时,最好开始只分配“Read”权限。
第二步:下面开始新建客户端的用户:选择Users下面的Add User,输入用户名和密码(密码可以设置为空),点击“OK”,添加用户成功。
VS2005 调试不能设置断点的解决办法
VS2005 调试不能设置断点的解决办法【 1】以前也遇到过同样的问题,但没有问个为什么,也没有探个毕竟。
昨天调试一个DLL,添加输出信息吧,太麻烦而且不轻易定位,但设置断点后按“F5”,断点不可用,气泡提示“当前不会命中断点,还没有为该文档加载任何符号。
”再右键->“位置”->“答应源代码与原始版本不同”,还是不行。
77777我还不信了,整它!后来才发现,“Alt+F7”->“配置属性”->“调试”->“命令”中输入的exe 路径下,已经提供了此 DLL,压根就没有调用咱 F5 启动的DLL。
把 exe (以及相关的其它文件,假如有)拷贝到 DLL 目录下,就可以调试了。
犯了个低级错误。
但也总结了一下不能调试的各种可能原因:1.解决方案配置是 Debug ,但没有在工程属性页中“Alt+F7”->“配置属性”->“C/C++”->“常规”->“调试信息格式”,选择“用于“编辑并继承”的程序数据库(/ZI)”。
另外,在“配置属性”->“链接器”->“调试”->“生成调试信息”中,选择“是”。
【2 】vs2005奇怪的断点无效问题最近一工程中,在调试的时候,有些cpp文件都可以设置断点并且跟进去,但是有一个cpp 文件总是不能设置断点,提示“当前不会命中断点。
源代码与原始版本不同。
” 重新更换过n次文件都不起作用,然后在goole搜索此类类似问题,找到下篇文章,然后我把那个cpp文件用记事本打开,另存为unicode格式,再重新编译,最后问题解决!也可以更改vs2005的设置,选项->常规,将要求源文件与原始版本完全匹配的勾取消就可以了!清理整个解决方案,重新编译,无效。
删除整个目录,从SubVersion服务器上Down下来重新来过,一样无效。
上网搜索,未果。
【3】经常被vs2005的一些选项设置搞惨,这玩意儿太莫名其妙了.就像上次的那个warning一样,解决办法居然是使用\n替换\n.VS2005断点失效(断点不可用)解决方案在网上搜罗了一下,如下:1、无效断点所在的项目和启动项目的设置:项目->属性->配置属性->C/C++->常规->调试信息格式,这里不能为『禁用』;2、项目->属性->配置属性->链接器->调试->生成调试信息,这里设为『是』;3、C/C++->优化->优化选择『禁用』;4、删除解决方案下的.ncb文件;5、工具->选项->调试->『要求源文件与原始版本完成匹配』去掉勾;6、最后在上述设置的情况下,重新编译整个解决方案;不过我的情况是debug模式下,1,2,3,4,6都试过了断点还是不可用,最后试试5居然就行了.真恶心!7.如果断点仍然无效,那么请格式化代码.很可能是代码含有不可见字符或代码单行过长等原因造成.这个我的一个同事遇见过。
VS2005开发环境设置详细步骤和常见问题解决
VS2005开发环境设置详细步骤和常见问题解决。
一、代码字体格式和大小设置
二、开发环境语言设置
三、菜单工具显示异常解决办法和开发语言环境的重置。
其中某些解决方法可能同样适用于VS2010。
代码字体格式和颜色的设置
1、点击菜单上的【工具】,可以看到最下面的【选项】。
2、进入”选项”卡【环境】下的【字体和颜色】(英文版的为【Font and Color】)
3、纯文本下设置字体格式和大小。
一般字体选择【Courier New】,大小可以根据个人喜好设置。
开发环境语言设置
如果安装的是英文版,但是打开后显示的却是中文版,就是语言设置的原因。
或者在开发过程中,打开的代码出现乱码也是跟语言设置有关系的。
1、打开【工具】菜单下的【选项】,点开【区域设置】
2、语言可以选择英文或者与Microsoft Windows相同,也就是操作系统设置的语言。
我们可以打开控制面板-----时钟、语言和区域---—区域和语言,然后点开【管理】查看。
3、设置好后,重启IDE即可。
如果没有成功,很可能就是没有语言包所致。
菜单栏个别工具选项显示不全的问题,比如【生成】菜单有时候会显示不全,这时我们可以通过重置开发环境设置来解决。
1、首先看下,【生成】菜单的问题。
通过以上设置可以解决不显示“总是显示解决方案”的问题。
2、通过重置可以重新设置环境的编程语言环境
在这里选择需要改变成为的环境。
设置好后就可以解决以上列出的问题。
vs2005使用教程
VS2005使用教程简介Visual Studio 2005(简称VS2005)是由微软公司开发的集成开发环境(IDE),广泛用于Windows应用程序开发。
本教程将为您介绍如何使用VS2005进行开发工作,包括项目创建、调试、发布等方面的内容。
安装与配置在开始使用VS2005之前,首先需要进行安装与配置工作。
1.下载安装程序:您可以从微软官方网站上下载VS2005的安装程序。
确保下载的版本与您的操作系统兼容。
2.运行安装程序:双击下载的安装程序,按照提示完成安装过程。
3.安装更新:安装完成后,打开VS2005,选择“帮助”菜单下的“检查更新”选项,确保您安装了最新的补丁和更新程序。
4.配置环境:在VS2005编辑器中,选择“工具”菜单下的“选项”选项,您可以根据自己的需求设置编辑器的外观和行为。
项目创建与管理VS2005可以帮助您快速创建各种类型的项目,包括控制台应用程序、Windows桌面应用程序、Web应用程序等。
下面是一个项目创建的简要步骤:1.打开VS2005,选择“文件”菜单下的“新建”选项,然后选择您要创建的项目类型。
2.在弹出的对话框中,输入项目的名称和位置。
3.点击“确定”按钮,VS2005将为您创建一个新的项目,并打开相应的编辑器。
除了创建项目外,VS2005还提供了项目管理的工具,您可以在“解决方案资源管理器”中管理项目的文件和依赖关系。
代码编写与调试VS2005具有强大的代码编辑功能,支持多种编程语言,如C#、C++、VB等。
以下是一些代码编写和调试的常用技巧:1.代码编辑:在VS2005中,可以使用智能感知、代码自动完成等功能来加速代码编写。
您可以通过键入关键词的一部分,并按下“Tab”键来自动完成代码。
同时,VS2005还具有代码格式化、代码导航等功能,可帮助您提高编码效率。
2.代码调试:VS2005内置了强大的调试器,您可以使用断点、变量监视窗口等工具来调试程序。
在调试过程中,您可以逐行执行程序,查看变量的值等。
教你如何使用VS远程调试
教你如何使⽤VS远程调试
从VS2010的安装⽬录⾥⾯,找到D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger⽂件夹
拷贝Remote Debugger⽂件夹到⽬标机器(程序运⾏机器)
运⾏mvsmon.exe,设置⼯具-选项为Windows⾝份验证,否则断点会不起作⽤
控制⾯板的⽤户选项⾥⾯,添加和远程机相同的⽤户命,密码,可以在⽤户管理⾥直接添加。
shift+右键--以其他⾝份运⾏-启动VisualStudio
调试-附加到进程(注意传输选择:默认值,限定符输⼊远程机IP )
执⾏刷新,附加到指定进程就可以了
如果要调试远程WebService,需要将web.config⾥⾯的Debug选项设置为true,还要讲对应的pdb符号⽂件拷过去。
复制代码代码如下:
<system.web> <compilation debug="true" targetFramework="4.0" /> </system.web>
Attention:
如果出现⽆法附加远程调试器,或者远程调试器⽆法连接到本地计算机的提⽰,注意将防⽕墙关闭---我在帮同事设的时候就是因为本机Windows防⽕墙没有关提⽰⽆法连接
VS2005远程调试跟2010是⼀样的,亲测可⽤
如果Remote Debugger选项设置为⽆可⽤计算机,断点不会起作⽤。
以上所述就是本⽂的全部内容了,希望⼤家能够喜欢。
vs2005 C# 主窗体和子窗体之间控件相互调用
vs2005 C# 主窗体和子窗体之间控件相互调用最近工作用到了C#开发Form应用程序,其中用到了主窗体和子窗体之间控件的相互调用。
查了一些资料,现在根据自己写的一个小示例总结如下。
1.主窗体中调用子窗体控件在主窗体中调用子窗体的控件很简单,只要在主窗体中创建子窗体的时候保留所创建的子窗体对象即可。
2.子窗体中调用主窗体控件方法如下:(1) 在主窗体类中定义一个静态数据成员,来保存当前主窗体对象,如下:public static MainForm pMainWin = null;(2) 然后在主窗体构造函数中,给上述静态成员初始化,如下:public MainForm(){InitializeComponent();pMainWin = this;//这里是初始化}(3) 在子窗体中调用主窗体,可以通过如下方式:”主窗体类名.pMainWin”,例如:this.Text_S3.Text = MainForm.pMainWin.Text_M1.Text;this.Text_S4.Text = MainForm.pMainWin.Text_M4.Text;3.以上所做的,只是让你能够访问当前主窗体对象或子窗体对象,如果想操作控件,可以直接修改控件的成员访问符,即可以把”private”修改成”public”。
当然最好的还是可以用增加公有属性的做法,这样不会破坏类本身的封装。
如下:public string Text_Box{get {return Text_S2.Text;}set { Text_S2.Text = value; }}4.现在把一个小示例的代码粘贴如下:(1)建立主窗体,添加四个文本框控件:Text_M1,Text_M4,用来主窗体中输入数据传给子窗体;Text_M2,Text_M3,用来显示子窗体中传过来的数据。
一个按钮Btn_M1用来调用子窗体。
Btn_M1按钮事件中添加代码,现把主窗体代码显示如下:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace MainSubControlpublic partial class MainForm : Form{//在主窗口类中定义一个静态成员,来保存当前主窗体对象,以便子窗体中调用其控件//子窗体调用时,通过"主窗体类名.pMinWin",然后在其构造函数中,给静态成员初始化.public static MainForm pMainWin = null;public MainForm(){InitializeComponent();pMainWin = this;}private void Btn_M1_Click(object sender, EventArgs e){SubForm SubFormE = new SubForm();//由于下面要调用到子窗体SubFormE的Text_S1控件,所以需要把Text_S1控件的成员访问符号由private改成public即可.//调用子窗体SubFormE的Text_S2控件是通过增加了一个public属性来调用的,不是修改访问修饰符号,当然也可以这么做//也可以通过增加public方法来实现.if (SubFormE.ShowDialog() == System.Windows.Forms.DialogResult.OK){this.Text_M2.Text = SubFormE.Text_S1.Text;this.Text_M3.Text = SubFormE.Text_Box;return;}return;}private void Btn_MExit_Click(object sender, EventArgs e){this.Close();}private void MainForm_Load(object sender, EventArgs e){}}}(2)建立子窗体,添加四个文本框:Text_S1,Text_S2,用来子窗体输入数据传给主窗体来显示;Text_S3,Text_S4,用来显示主窗体传过来的数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[摘]VS2005调试技巧集合
1. 一个如下的语句for (int i = 0; i < 10; i++){if (i == 5)j = 5;},什么都写在一行,你怎么在j=5前面插
入断点
2. 在一个1000次的循环体内部设置断点,你希望当循环进行到900次后中断,怎么才能做到呢?
3. 你有一个表达式在上面循环的某一次发生了变化,你想知道是哪一次,在哪个地方,怎么才能做
到?
4. 你希望你的断点在被命中100次后,每命中三次中断一次,比如第103,第106,第109怎样做?
5. 你有在调试一个服务程序,希望在其内部打上了断点,可是,由于这是一个公用的服务你不希望
其他访问这个服务的程序被你的调试所干扰,你想怎么办?
6. 怎样知道2个断点中断的时间间隔
问题1,2
这两个问题最简单,我在一个例子里说明
例如如下循环
for(int i=0;i<1000;i++){doSomeThing......}
在循环的大括号上单击右键,插入断点,用这个方法,可以对付那些喜欢把语句写在一行上的家伙,其实,随着.Net3.5中Linq的出现,我们肯定也会经常在在一行上写复杂的表达式,这个时候用这种插入
方法会比较管用
ok,现在我们来编辑这个断点的条件,在断点上右键单击,选择如图菜单项
在弹出的窗口中可以设置断点命中的条件i==900
注意我是在调试C#代码,默认的条件语句语法是C#,如果你想切换,那就需要用Ctrl-B,来插入断
点,并在弹出窗口中选择语言
通过这样设置条件断点,我们就可以解决我们的问题1,2了
问题3
同样通过设置条件断点我们还可以解决我们的问题3,对表达式变化的跟踪
string user="yizhu2000"
for(int i=0;i<10000;i++){
DoSomething1()
.......
DoSomethingN()
}
当循环执行完毕时我们发现user变成了"smart_boy",你不知道这个值是在第几次循环的时候变化的,那么你是不是会选择打上断点,一次一次中断,来查看呢?当然不用
在循环体结束的位置我们设置一个断点,打开条件编辑窗口(打开方法同上),设置表达式为user,勾选下面的HasChanged,也就是说,你告诉断点,当user的值发生变化时才触发
(注意:第一次执行到断点的时候,程序一定会中断,并计算这时表达式的值,所以,所谓发生变化,指的是以后执行到断点是表达式的值和第一次执行到断点时表达式的值的比较)
问题4
如何让断点在指定的命中次数或者大于某个次数时触发呢?方法是设定几个断点的HitCount,右键单击断点,在弹出菜单中选择Hit Count,会弹出如下窗口
在"when the break point is hit"下拉列表里,我们可以看到四个选项
break always:总是中断
break when the hit count is equal to:等于某次数时中断
beak when the hit count is a multpile of:当次数是某数的倍数时中断
break when the hit count is greater than or equal to:当大于等于某数时中断
问题5
前面4个问题都已经解决了,第5个问题的解决方法是利用断点的Filter功能,比如我希望断点只有被机器名为yizhu的机器访问才能触发,我可以这样设置
当其他机器访问程序的时候,断点将不会触发,这样做的优点是通过设置机器名,我们可以让其他机器访问的时候感觉不到断点的存在,除此之外我们可以设置机器名,进程号,进程名,线程号,线程名作为filter,而且还可以把他们组合起来,比如我希望通过当机器yizhu的dllhost进程调用时才触发,那么问题就可以设置为MachineName="yizhu"&ProcessName="dllhost"
问题6
现在我们来解决第6个问题:
在程序性能调试的时候,我们经常需要知道某段代码的执行效率,一般来说,我们可以在程序中加入时间点,通过时间点相减来取得时间间隔,这种方法有个显而易见的缺点就是需要修改程序,想要不修改程序,就需要借助一些工具,那么有没有什么方法可以声明式的插入时间点,并计算值呢?其实断点完全可以做到
在给出方法前,我们来看看断点的另外一个设置项,When Hit,这个选项可以让我们在命中断点后做一些事情,包括输出一些内容,或者调用宏,比如输出一个程序中变量的值
我们输出了变量user的值,下面Continue Execution表示程序不会中断,输出后继续执行,注意表达式需要用{}括起来,,其他的部分会被作为字符串输出。
设定WhenHit后断点变成了方形(看厌了圆断点,我
还挺喜欢这个方家伙的)
在output中查看输出结果,如下:
既然可以计算表达式,我们的第一个最简方案就出来了,也就是在程序执行到断点的时候,输出DateTime.Now,这样当然是可行的,但是我们需要的是时间间隔,所以我们还需要自己来算个减法,还是挺麻烦的,怎么样才能让程序自己输出时间间隔呢?有一个想法是这样的,我们在上一个断点声明一个时间变量,然后在下面的断点里用DataTime.Now减去这个变量,即
断点一的条件:{DateTime _t=DateTime.Now;}
断点二的条件:{DateTime.Now-t;}
看起来不错,但是实际运行时就有问题了,让我们看看输出吧
上面高亮的部分说,变量申明只能在immediate window中进行,所以断点一的变量没有申明成功,关于immediatewindow,我们以后会涉猎到,反正就是说想在表达式里申明变量,没门,死路一条.那么我们怎么才
能不申明变量又时间点呢?
这时我想起了Thread.SetData 方法,这个方法可以往当前线程专门提供的空间中插入一些数据,并且
可以通过GetData得到数据,具体细节参考
/zh-cn/library/system.threading.thread.setdata(VS.80).aspx 于是方案就有了,在第一个断点处把时间放入Thread的DataSlot,然后第二个断点取出来相减
断点一的条件:{Thread.SetData(Thread.GetNamedDataSlot("ExecutionTime"),DateTime.Now);}
断点二的条
件:{DateTime.Now-(DateTime)System.Threading.Thread.GetData(System.Threading.Thread.GetNamed
DataSlot("ExecutionTime"));}
看看输出效果
我们的目的已经达到了,output中成功的输出了时间间隔,当然,还不是很完善,首先,这个方法限于两个断点,你想多打几个断点,测试两两间的间隔还是比较麻烦.测量精度也可以提高,大家有兴趣可以自己研究这个方
法的扩展。