1.vs的安装目录中 ~/Common7\IDE\Remote Debugger,把目录中的x68 和x64拷贝到服务器上
2.运行msvsmon.exe,看看端口号,一般可能是4018
3.将本机代码在debug模式下编译输出,部署到服务器上
4.在本机vs开发工具中,调试---附加到进程--限定符中,填写服务器IP和端口
5 点击刷新,如果是web应用,可以看到对应应用程序池的w3wp.exe进程
6 附加到进程
这样就可以在本地远程调试代码,使用后及时关闭msvsmon
编译参数的设置。主要通过ide的菜单项project->settings->c/c++页来完成。我们可以看到这一页的最下面project options中的内容,一般如下: /nologo /mdd /w3 /gm /gx /zi /od /d "win32" /d "_debug" /d "_windows" /d "_afxdll" /d "_m bcs" /fp"debug/writingdlgtest.pch" /yu"stdafx.h" /fo"debug/" /fd"debug/" /fd /gz /c 各个参数代表的意义,可以参考msdn。比如/nologo表示编译时不在输出窗口显示这些设置(我们可以把这个参数去掉来看看效果)等等。一般我们不会直接修改这些设置,而是通过这一页最上面的category中的各项来完成。 1) general:一些总体设置。warning level用来控制警告信息,其中level 1是最严重的级别;warnings as errors将警告信息当作错误处理;optimizations是代码优化,可以在category的optimizations项中进行更细的设置;generate browse info用以生成.sbr文件,记录类、变量等符号信息,可以在category的listing files项中进行更多的设置。debug info,生成调试信息:none,不产生任何调试信息(编译比较快);line numbers only,仅生成全局的和外部符号的调试信息到.obj文件或.exe文件,减小目标文件的尺寸;c 7.0- compatible,记录调试器用到的所有符号信息到.obj文件和.exe文件;program database,创建.pdb文件记录所有调试信息;program database for "edit & continue",创建.pdb文件记录所有调试信息,并且支持调试时编辑。 2) c++ language:pointer_to_member representation用来设置类定义/引用的先后关系,一般为best-case always表示在引用类之前该类肯定已经定义了;enable exception handling,进行同步的异常处理;enable run-time type information迫使编译器增加代码在运行时进行对象类型检查;disable construction displacements,设置类构造/析构函数调用虚函数问题。 3) code generation:processor表示代码指令优化,可以为80386、80486、pentium、pentium pro,或者blend表示混合以上各种优化。use run-time library用以指定程序运行时使用的运行时库(单线程或多线程,debug版本或release版本),有一个原则就是,一个进程不要同时使用几个版本的运行时库。single-threaded,静态连接libc.lib库;debug single-threaded,静态连接libcd.lib库;multithreaded,静态连接libcmt.lib库;debug multithreaded,静态连接libcmtd.lib库;multithreaded dll,动态连接msvcrt.dll库;debug multithreaded dll,动态连接msvcrtd.dll库。连接了单线程库就不支持多线程调用,连接了多线程库就要求创建多线程的应用程序。 calling convention可以用来设定调用约定,有三种:__cdecl、__fastcall和__stdcall。各种调用约定的主要区别在于,函数调用时,函数的参数是从左到右压入堆栈还是从右到左压入堆栈;在函数返回时,由函数的调用者来清理压入堆栈的参数还是由函数本身来清理;以及在编译时对函数名进行的命名修饰(可以通过listing files看到各种命名修饰方式)。struct member alignment用以指定数据结构中的成员变量在内存中是按几字节对齐的,根据计算机数据总线的位数,不同的对齐方式存取数据的速度不一样。这个参数对数据包网络传输等应用尤为重要,不是存取速度问题,而是数据位的精确定义问题,一般在程序中使用#pragma pack来指定。 4) customize:disable language extensions,表示不使用微软为标准c做的语言扩展;eliminate duplicate strings,主要用于字符串优化(将字符串放到缓充池里以节省空间),使用这个参数,使得 char *sbuffer = "this is a character buffer"; char *tbuffer = "this is a character buffer"; (自己研究吧)
Photoshop|
Dreamweaver|
SVG|
WebGL|
Visual Studio|
PowerDesigner|
Eclipse|
Git|
Apache Ant|
Atom|
Composer|
CodeSmith|
Flex|
Gradle|
Maven|
Sublime Text3|
SVN|
Tableau|
Vim|
Chrome开发者工具|
OpenGL|
Unity|
Direct3D|
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....