如何远程断点调试本地localhost项目
前言
对于一般开发网站的IDE自带的服务器是都跑在 localhost 地址上的。(如下图的asp.net)

而这种地址是只能在本机通过 localhost 或 127.0.0.1 地址访问到,而无法直接通过本机的内网IP地址访问的。
所以就无法实现在虚拟机中访问本地localhost站点,以及在虚拟机访问时的代码断点,调试,以及用手机访问本地站点等。
虽然可以使用IIS等web服务器发布本地IP上,来实现外部访问,但是依然无法实现代码断点,当然可以用附加进程调试,不是本文讨论范围。
接下来就来讲解如何使用本机内网地址访问localhost上运行的网站
实现思路
期望目标是:在虚拟机中访问真实机的内网IP地址来访问真实机中运行的localhost的站点。
遂,在真实机中开启Fiddler,来充当虚拟机的代理服务器,去向真实机请求资源,同时由Fiddler修改虚拟机的请求报文,将虚拟机的Request请求报文中的真实机的IP地址改为localhost。

设置Fiddler
要用到的软件只有一个,Fiddler,没有的可以去官网下载:http://www.telerik.com/fiddler
进入Fiddler的Tools的FiddlerOptions...选项,Connections选项卡
勾选上“Allow remote computers to connect”选项,允许其他计算机连接

如果你的端口没有被占用的话默认应该是 端口
设定虚拟机的代理服务器
之后进入虚拟机,设置系统代理为当前真实机的IP的8888端口,推荐使用我之前文章中写的“自动设置代理服务器批处理”
设置完成后去查看设置情况, 10.0.1.11 是我的真实机的内网地址,端口8888。

设置完成后从虚拟机访问 真实机的IP+ 端口,如果能显示出FiddlerEchoService就说明代理没问题。

此时在虚拟机中访问百度已经可以被fiddler抓到了。
关于如何鉴别流量是本机的还是从远程访问的很容易,看Fiddler的Process列即可:
注意:本机流量可以追查到流量进程名及PID,而远程流量是无法显示进程的。

上图第一条就是由火狐发出的请求,而下面的流量都是从虚拟机发出的请求,没有进程名。
设置Fiddler自动化修改数据报文
现在从虚拟机已经可以通过我的真实机做代理向外访问了,所以接下来需要从代理服务器Fiddler中修改数据包即可。
需要一款FiddlerScript Editor的软件,可以从官网下载:http://www.telerik.com/download/fiddler/fiddlerscript-editor
关于FiddlerScript 的使用和介绍在之前的一篇文章中已经提到一些。
选择跳转至 OnBeforeRequest 函数。
通过右侧的API文档得知,oSession对象的属性hostname表示不包含端口号的HTTPHeader的host字段值。

在此函数最后写上如下代码,目的是要在数据发来请求后修改数据报文,将指向本机的URL修改localhost地址。

保存后回到虚拟机。访问10.0.1.11的localhost服务9527端口,可以发现,所有数据包都被修改为localhost地址
同时,我真实机上跑的localhost的服务也可以被内网其他计算机访问了。

手机端访问
前提是手机连接的wifi必须要和真实机在同一网段。
如图,虽然连接了同一网段的wifi下,但不设置也是无法访问的。

进入手机wifi设置,高级设置,代理设置,修改为“手动”
IP地址为我的真实机IP,10.0.1.11,
端口为Fiddler的监听端口:8888

设置了代理服务器后,就可以顺利通过IP地址访问localhost的服务了,当然也可以同步加断点,调试等。

注意事项
1,注意在使用过程中Fiddler不能关闭,关闭了就没有代理服务器了。
2,注意在使用完成后,把代理服务器设置删除,否则虚拟机/手机就无法正常上网了。
相关链接
工具下载(GitHub):
其他文章:
如何远程断点调试本地localhost项目的更多相关文章
- .NET C#微信公众号开发远程断点调试(本地远程调试生产环境代码)
最近在做微信公众号开发,由于之前没有接触过,突然发现调试不方便,不方便进行断点跟踪调试.因为微信那边绑定的服务器地址必须是公网地址,但是还是想进行断点调试(毕竟这样太方便了,程序有Bug,一步步断点跟 ...
- vscode断点调试本地客户端文件
一.安装chrome,安装vscode,打开vscode编辑器,安装插件Debugger for Chrome 二.新建文件 1.目录结构 . ├── index.html ├── index.js ...
- PHP vscode+XDebug 远程断点调试服务器上的代码
对于简单的项目或仅仅想知道某一位置的某个变量是什么值,直接使用var_dump配置exit来打印和中断就可以了,方便又快捷, 而对于大型项目的调试,或想了解某个系统的整个运行过程,xdebug可能会是 ...
- 不用print调试 xdebug ubuntu phpstorm 远程断点调试
即使这会写php也遵守zebra大人的指示:不用print调试!!!!----环境ok ---gan !!! w http://blog.csdn.net/ty_hf/article/details ...
- Intellij Idea中如何debug本地maven项目
方法一:使用maven中的jetty插件调试本地maven项目 1.打断点 2.右击"jetty:run",选择Debug运行 3.浏览器发送http请求,开始调试 方法二:利用远 ...
- idea中如何debug本地maven项目
方法一:使用maven中的jetty插件调试本地maven项目 1.打断点 2.右击“jetty:run”,选择Debug运行 3.浏览器发送http请求,开始调试 方法二:利用远程调试功能调试本地m ...
- phpstorm xdebug 无法断点调试问题
最近用phpstorm+xdebug调试一段php代码的时候莫名其妙的无法切入断点调试 本地用的php集成环境是UPUPW ANK V1.1.7 64Bit 选择了集成环境中php版本为7.1.x 搞 ...
- IDEA2017 maven Spark HelloWorld项目(本地断点调试)
作为windows下的spark开发环境 1.应用安装 首先安装好idea2017 java8 scalaJDK spark hadoop(注意scala和spark的版本要匹配) 2.打开idea, ...
- 微信公众号本地断点调试(frp反向代理或Remote Debugger)
问题描述: 需要开发微信授权和订阅推送,但是感觉调试不方便,就试着几种方式.因为是用的C#开发,Visual Studio工具自带配套的远程工具 (Remote Debugger).但是感觉不稳定,容 ...
随机推荐
- 虚拟机Linux----Ubuntu1204----安装jdk1.8
1.介绍 这里主要讲一下,如何在Ubuntu1204下通过压缩包的方式安装jdk1.8,rpm的直接运行就行了. 2.步骤 2.1 下载 地址:http://www.oracle.com/techne ...
- Super A^B mod C
Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000000000,1<=B ...
- html,js简单保存textarea换行格式
有时候我们在做表单提交时,往往需要把html标签保存起来,但是textarea不保存换行的信息,所以我们需要用js来实现保存textarea的换行等HTM标签.真正让HTML文本框里的换换等格式保留下 ...
- 备忘:文本编辑器(z.B. Sublime Text 2)策略,git策略
1.以Sublime Text 2 为例: 新建一个test.py文件,敲完例程 代码 之后,再另存为比如 if.py, list_tuple.py云云 而test.py可以一直用来编辑 2.git ...
- Redhat6.5 安装64位oracle11.2.0.1
系统架构 [root@localhost ~]# uname -a Linux db 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 ...
- 迅为4412开发板支持AVIN视频输入/AV监控摄像头输入模块
AVIN模块(iTOP-4412开发板专用) 产品介绍:视频输入/AV监控摄像头输入模块: 该模块及配套的软件为开发视频采集.监控.车载后视等产品提供了很好的参考. iTOP-4412 开发平台 开发 ...
- 关于HADOOP HA 中DFSZKFC的理解
[转自uc技术博客:http://tech.uc.cn/?p=252] FC是要和NN一一对应的,两个NN就要部署两个FC.它负责监控NN的状态,并及时的把状态信息写入ZK.它通过一个独立线程周期性的 ...
- NFS(Network File System)服务配置和使用
Sun公司开发NFS (Network File System)之初就是为了在不同linux/Unix系统之间共享文件或者文件夹.可以在本地通过网络挂载远程主机的共享文件,和远程主机交互.NFS共享存 ...
- WEB安全--Google Hacking
通常我们用Google查询一些我们测试站点的一些信息,Google提供了一系列的搜索语句,下面我为大家详细的介绍一下! 常用语法: site:指定域名 intext:正文中存在关键字的网页 intit ...
- 如何判断两个String是否是Anagrams_java实现
Anagrams:是颠倒字母顺序的字符串 本文提供三个方法,分别分析时间空间复杂度 方法一:暴力遍历 时间复杂度:O(n^2) 方法二:基于排序算法,Sorting的时间复杂度是O(n*log(n)) ...