写了个TCP连接状态统计小工具,代替 netstat 和 find 命令组合
作者:V君 发布于:2022-6-26 11:33 Sunday 分类:我的应用
然后是使用说明
ConnectionStat.exe 若干监听端口参数
示例
ConnectionStat.exe 80
ConnectionStat.exe 443
ConnectionStat.exe 80 443
首先会输出当前主机的连接状态统计,接着挨个参数指定的端口筛选统计
最后如果指定两个端口以上,则统计列出的端口连接状态总数
简单扯一扯
工作中有一些TCP协议的服务器用来接入各种设备,经常需要统计连接数来排查状况,经常用 netstat 和 find 命令搭配,每次使用都觉得麻烦,那就写个简单的工具来实现汇总,基于这个工具外面再套一层,从服务配置文件读取监听端口,这就更方便了。
通过嗅探标准输入输出来了解VisualGDB烧录操作
作者:V君 发布于:2020-4-12 13:55 Sunday 分类:折腾手记
这篇文章主要面向的是和我一样不熟悉 GDB 的人,请已经熟练使用 GDB 的老鸟不要笑,或者来看看我是怎样嗅探标准输入输出的也还凑合吧。
最近用起 VisualGDB 之后,总算从 Keil 的地狱中逃出生天,开发过程的确是很爽了。然而,如果仅仅是程序烧录到单片机也要装一个 VS 带上 VisualGDB,还得拿到源代码?很显然实际量产不应该这么做,理想的方式应该是将编译后的程序用烧录工具刷入单片机。
好奇心使我对这个过程产生了兴趣,从调试器适配的时候提示下载 OpenOCD 能看出 VisualGDB 是透过它来调用 ST-LINK 的,进一步又发现 OpenOCD 的另一边由 GDB 来操作。命令行参数可以用 Procexp 轻松获得,但进程启动之后的就全都是通过标准输入输出流来操作 GDB 了。
因为使用 GDB 是个过于庞大的课题,就懒得去学了,短时间内也不会用得顺手吧(如果懂得如何使用 GDB 的话还用得着 VisualGDB 么?
想知道 VisualGDB 如何操作 GDB 来烧录程序。首先去咕狗找找标准输入输出的捕获方法,不断换关键字兜了几圈回来没有一点收获,甚至一点线索都没有。
一拍脑袋,那就搞个透明代理来记录双向传递的内容吧。于是就写了个简单的标准输入输出流嗅探工具,还上传了一个直接可用的二进制文件,将原来的 EXE 改名扩展名前面增加 -real,例如 GDB.EXE 改成 GDB-real.EXE 然后用嗅探工具冒充它,启动之后就会在旁边产生名为 GDB.EXE.stdio-sniff.yyyymmdd-HHmmss-fff.log 的文本文件,将命令行参数、标准输入、标准输出、错误输出记录到里面。
这样问题就解决了——原来烧录要用 GDB 的 load 命令。
然后进一步尝试离开 VS 环境独立运行,将 OpenOCD 和 GDB 以及编译好的程序搬到一台没有环境的机器,装好 ST-LINK 驱动,按照嗅探来的操作走一波,嗯嗯,吼!现在离开 VS 环境也能烧录了!
标签: 软件开发 C# 命令行 cmd 多进程 控制台 调试技术 软件故障诊断
解决VS2019+ReSharper载入解决方案后CPU占用过高卡死
作者:V君 发布于:2019-8-15 11:56 Thursday 分类:折腾手记
TL;DR
0)杀掉卡死的VS2019进程
1)删除位于以下目录的解决方案缓存
%UserProfile%\AppData\Local\JetBrains\Transient\ReSharperPlatformVs??\v???_????????\SolutionCaches
2)删除解决方案下的 .vs 文件夹
+)重新打开解决方案,不再卡死
~扯扯时间~
在用SourceTree从Git仓库拉取更新后,打开vs发现长时间没响应,CPU占用很高。
掏出Procexp看看他在干啥,发是一条线程占用很高
在clr.dll!GetMetaDataInternalInterfaceFromPublic的地方
咕狗得出结论是ReSharper,就尝试清缓存了,果不其然问题解决了,美滋滋
~相关话题~
另外,如果在更新SVN且有冲突,在合并前就打开解决方案也可能导致卡死,
需要先在外部解决冲突合并项目文件,因为错误的项目文件结构会让VS或ReSharper懵逼
这po就当作餐前甜点,晚些再整理这个月的主要内容 乂目
解决Chrome打开闪退,删除preferences文件
作者:V君 发布于:2018-10-2 0:21 Tuesday 分类:折腾手记
室友T同学在一次由于卡顿然后重启的时选择强行关闭了Chrome,重启之后Chrome打不开了。
(T:Chrome崩溃了,怎么办?我:上网查一下呀!T:但是Chrome打不开呀!)
表现为窗口出现之后马上消失,更新到最新版也没用, 问题可能出现在用户数据文件.
我们一边用ProcMon盯住进程行为,一边做了一些尝试
-删除系统临时文件,问题依旧
-删除Crome缓存文件,问题依旧
-改走UserData文件夹,可以启动了,但所有数据丢失
-还原UserData,进去里面改走Default,结果和上一条一样
将Default还原之后回到了闪退,导致这个问题元凶肯定就在Default文件夹里。
经过一番排除,最终定位到文件夹中的preferences文件,
它没有后缀,是个JSON文件,内容格式正确,里面并没有明显的线索。
将它删除之后,chrome打开了,历史、书签之类的正确看似都正常,
但上次会话的选项卡丢掉了,咕狗账号的登录状态也失效。
虽然没有完美解决问题,这次的结果也不算太糕。
标签: Chrome 故障解决 软件故障诊断 Sysinternals
使用Windbg+sos+sosex从内存转储详细分析对象引用,排查.NET服务应用内存暴增
作者:V君 发布于:2018-8-22 12:37 Wednesday 分类:填坑经验
TL;DR
1) 准备:先载入转储
如果缺少dll, 去 https://sos.debugging.wellisolutions.de/ 找
下来放windbg旁边,然后重新载入.
2) 初始化:载入sos和sosex [.loadby sos mscorwks],[.load sosex],首次要执行[!bhi]
3) 对象统计:用sos的[!dumpheap -stat]或者sosex的[!sosex.mfrag -stat]获取结果
4) 枚举对象:用sos的[!dumpheap -type <上结果类名>]就能刷出
sosex的[mfrag -mt:类名]如果能用就可以直接点击链接, 这次不知道为啥不工作.
5) 查找引用:用sosex的[!refs <上结果地址>]
顺着地址链接一路跟踪就能定位内存占用的代码位置.
必须扯:
blogger
Google Web Translator
热门日志
随机日志
最新日志
最新评论
- V君
@Quartz:(出现)... - Quartz
怎么不见人了呢... - V君
@Soar:DHCP 协议相... - V君
@Soar:当然是非... - Soar
@V君:谢谢 有空... - Soar
搞一个 1230v3+B85... - V君
@Soar:另外,也可... - V君
@Soar:iscsi服务端... - Soar
难怪这么卡,尤其... - Soar
clone了源码,提示...
分类
存档
- 2024年5月(1)
- 2023年7月(1)
- 2023年5月(1)
- 2022年11月(1)
- 2022年10月(1)
- 2022年9月(1)
- 2022年8月(1)
- 2022年7月(1)
- 2022年6月(1)
- 2022年5月(2)
- 2022年4月(1)
- 2022年3月(1)
- 2022年2月(1)
- 2022年1月(1)
- 2021年12月(1)
- 2021年11月(1)
- 2021年10月(1)
- 2021年9月(1)
- 2021年8月(1)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(1)
- 2021年4月(1)
- 2021年3月(1)
- 2021年2月(1)
- 2021年1月(1)
- 2020年12月(1)
- 2020年11月(1)
- 2020年10月(2)
- 2020年9月(1)
- 2020年8月(1)
- 2020年7月(1)
- 2020年6月(1)
- 2020年5月(1)
- 2020年4月(2)
- 2020年3月(3)
- 2020年2月(1)
- 2020年1月(1)
- 2019年12月(1)
- 2019年11月(1)
- 2019年10月(1)
- 2019年9月(1)
- 2019年8月(2)
- 2019年7月(1)
- 2019年6月(1)
- 2019年5月(1)
- 2019年4月(1)
- 2019年3月(1)
- 2019年2月(1)
- 2019年1月(2)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(3)
- 2018年9月(4)
- 2018年8月(6)
- 2018年7月(4)
- 2018年6月(1)
- 2018年5月(2)
- 2018年4月(2)
- 2018年3月(3)
- 2018年2月(1)
- 2018年1月(1)
- 2017年12月(1)
- 2017年10月(2)
- 2017年9月(1)
- 2017年8月(2)
- 2017年7月(1)
- 2017年6月(5)
- 2017年5月(2)
- 2017年4月(2)
- 2017年3月(3)
- 2017年2月(2)
- 2017年1月(2)
- 2016年12月(3)
- 2016年11月(2)
- 2016年10月(3)
- 2016年9月(4)
- 2016年8月(2)
- 2016年7月(4)
- 2016年6月(3)
- 2016年5月(1)
- 2016年4月(4)
- 2016年3月(3)
- 2016年2月(1)
- 2016年1月(5)
- 2015年12月(4)
- 2015年11月(5)
- 2015年10月(1)
- 2015年9月(6)
- 2015年8月(4)
- 2015年7月(1)
- 2015年6月(6)
- 2015年5月(3)
- 2015年4月(3)
- 2015年3月(2)
- 2015年2月(1)
- 2015年1月(3)
- 2014年12月(1)
- 2014年11月(1)
- 2014年10月(1)
- 2014年9月(3)
- 2014年8月(1)
- 2014年7月(1)
- 2014年6月(1)
- 2014年5月(3)
- 2014年4月(1)
- 2014年3月(1)
- 2014年2月(2)
- 2014年1月(1)
- 2013年12月(2)
- 2013年11月(2)
- 2013年10月(1)
- 2013年9月(3)
- 2013年8月(14)
- 2013年7月(7)
- 2013年4月(1)
- 2013年3月(4)
- 2013年2月(6)
- 2013年1月(6)
- 2012年12月(8)
- 2012年11月(6)