写了个TCP连接状态统计小工具,代替 netstat 和 find 命令组合

作者:V君 发布于:2022-6-26 11:33 Sunday 分类:我的应用

TL;DR for 立即想拿来用的人:[下载 |源代码 ]

然后是使用说明
 ConnectionStat.exe 若干监听端口参数
示例
 ConnectionStat.exe 80
 ConnectionStat.exe 443
 ConnectionStat.exe 80 443
首先会输出当前主机的连接状态统计,接着挨个参数指定的端口筛选统计
最后如果指定两个端口以上,则统计列出的端口连接状态总数

简单扯一扯

工作中有一些TCP协议的服务器用来接入各种设备,经常需要统计连接数来排查状况,经常用 netstat 和 find 命令搭配,每次使用都觉得麻烦,那就写个简单的工具来实现汇总,基于这个工具外面再套一层,从服务配置文件读取监听端口,这就更方便了。

标签: 软件开发 C# 软件故障诊断 TCP

评论(0) 引用(0) 浏览(140)

通过嗅探标准输入输出来了解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 多进程 控制台 调试技术 软件故障诊断

评论(0) 引用(0) 浏览(573)

解决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就当作餐前甜点,晚些再整理这个月的主要内容 乂目

标签: 软件开发 软件故障诊断

评论(2) 引用(0) 浏览(3455)

解决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

评论(3) 引用(0) 浏览(6682)

使用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 <上结果地址>]

  顺着地址链接一路跟踪就能定位内存占用的代码位置.

 

 

必须扯:

阅读全文>>

标签: 软件开发 C# 调试技术 windbg 软件故障诊断 sosex

评论(0) 引用(0) 浏览(1290)

Powered by emlog 去你妹的备案 sitemap