一个小工具:DebugFile

  刚出道时候写了这样一个Bug:(这bug让我们赚了,两个多月没人抽到好东西~)

if ( pChar->m_info.nFateSystemSpend += rmb > LIMIT_RMB )
{
    pChar->m_info.SetPlayerFlag(Enum_CanGet, true);
}

  作死的优先级问题,让你浪ヽ(.??ˇд ˇ??;)?

  关键的,这个功能我们测了两遍都没发现问题。第二次是数值策划反馈:一个多月了没爆好产出,有些不正常,再测一遍……好丢脸(--)凸死ね

  为什么一直没发现呢?

  由于“LIMIT_RMB”外网环境下非常大,QA要跑到很麻烦,所以内网测试时把这个值调小了,如此,只要单次消费值“rmb”够大,就能判断通过,然后表现正常ヾ(。??∀??)ノ

  (PS:表问为毛没单元测试,做过游戏开发赶上线吗亲)

  等bug爆出来时候,我的心情是这样的:嗯,意淫了优先级还可以接受,可尼玛被人点名测都没测出来,太丢人了〒_〒

  “表作,一条语句一行代码,啥操作都得括起来”……这这还不够哇,怎样更容易暴露问题呢?

  其实这种代码,单步下傻逼都看得粗来╮(╯_╰)╭但开发中,我根本不知道那里会有问题,也不可能全单步一遍。就在想能否像单步那样捕获变量的状态,方便查错。

  ——记录变量旧值,在需要的时刻比对旧值、当前值,用于输出——

  想做这么个功能。那会碰巧啃完项目的bytebuffer实现(好奇bytebuffer怎么做到啥数据都能塞),便利用相同思想,实现了DebugFile的“捕获”功能,流式接口设计:

file << "a" << paramA << "f" << paramF << "d" << paramD << "s" << paramS;

  内部通过c艹淫荡的模板、函数重载决议,获知输入变量的类型,记录地址,并将旧值拷贝至buffer中。待到DebugFile析构,根据类型,从记录地址中获取变量的当前值,比对buffer中分析出的旧值,按配置写Log。输出可以支持:按函数、功能、消息等分目录分文件。

  预先绑定要关心的变量,黑盒跑完功能后,查看相应Log即可获知:某函数、某消息...处理过后,绑定变量的变动情况。

  方便查看操作过后,系统的状态改变。

  再包装成宏,仅于Debug下生效即可。

  源码:https://github.com/3workman/Tools/blob/master/tool/DebugFile.h

时间: 2024-11-11 01:45:39

一个小工具:DebugFile的相关文章

【开源一个小工具】一键将网页内容推送到Kindle

最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zhanjindong/SimpleSendToKindle 功能:Windows下一个简单的将网页内容推送到Kindle的工具. 写这个工具的是满足自己的需求.自从买了Kindle paperwhite 2,它就成了我使用率最高的一个电子设备.相信很多Kindle拥有者和我一样都有这样一个需求:就是白

分享一个小工具:UnityRemoteLog

最近经常需要调试Unity客户端的Android版,看LOG是一个最基本的调试方法了.为了看LOG,总要看Eclipse这么重量级的工具,觉得还是有点麻烦,于是抽了点业余时间写了一个小工具:把Unity的LOG使用网络连接转发到一个PC端的窗口程序中. 使用方法 将RemoteLog.cs拷贝到你的Unity Project里面: 在任意一个MonoBehavior脚本的Start()函数中,调用RemoteLog.Instance.Start(主机IP,端口):目前默认端口是2010: 运行U

介绍一个小工具 Linqer

原文:介绍一个小工具 Linqer 这些天写Linq挺烦人的,就上网搜搜可有什么好的sql转Linq的工具,咦,马上就看上了Linqer. 哈哈,介绍一下使用方法吧: 官方下载网站:http://sqltolinq.com/download. 第一步:运行这个神马文件. 第二步:指定一个路径给它.他会生成一个Linqer.exe可运行的文件. 第三步:运行这个exe文件,点击Add按钮, 第四步:在弹出的Add界面中,给串串取个名字(如这里面的Demo),点右边的“省略号”按钮,会弹出你做梦都会

Java正则表达式——测试正则表达式的一个小工具

正则表达式是一种强大而灵活的文本处理工具.使用它我们能以编程的方式,构造复杂的文本模式,并对输入的字符串进行搜索.一旦找到了匹配这些模式的部分,你就能够随心所欲地对它们进行处理. 关于正则表达式的语法,网上对此有介绍的文章实在是多不胜数,实在找不到,还可以查看Java的API文档,就不多介绍了.这里主要介绍一个可以测试正则表达式的小工具.直接上代码: 1 package com.test.stringregex; 2 //{Args: abcabcabcdefabc "abc+" &q

分享一个小工具:Excel表快速转换成JSON字符串

在游戏项目中一般都需要由策划制作大量的游戏内容,其中很大一部分是使用Excel表来制作的.于是程序就需要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Office Excel组件来实现数据访问的,效率十分令人不满.一个端游项目一般要上百个表格,手游项目20.30个表格基本也是要的,于是表格导入程序的过程一般要几分钟,项目后期要接近半个小时. 此次分享的小工具,在速度上有质的飞越,比上述方法实现的工具有接近100倍的速度提升: 完整项目源代码下载:https

x01.TextProc: 两三分钟完成的一个小工具

在工作中,遇到这么个问题,需要将 Excel 表中类似 2134-1234-4456 的商品编号输入到单位的程序中,而程序只认 213412344456 这种没有 ‘-’ 的输入.数量比较多,一笔一笔的敲,费时费力不可取,所以转换一下,复制粘贴,不仅可以提高速度,而且也不易出错.并且,由于 Excel 表是别人提供,可能反复遇到此问题,所以写个转换的小工具是必要的. 直接操作 Excel 吗?问题 ”矮小下“,显然用不着这么麻烦.我的方法是,将商品编号列复制粘贴到记事本中保存为 temp.txt

一个小工具的开发

由于大神们的演讲经常托管在土鳖网上,要想看大神的视频就需要些工具. 从而些了这个小工具,不是很完善,只是能用. 其中比较重要的设计是,由于中美之间的ping很好,掉包也很严重,经常会出现tcp连接不上的情况. 根据这情况,我选择一开始就建立10个tcp连接,将所有的请求分散的到这10个连接上,而不是为每一个socks5的连接建立一个远程连接. 那么怎么标示呢?我选择为每一个socks5连接申请一个ID,这个ID在从fog到princess的传输过程中用来标示相应的socks5连接.从而做到tcp

一个小工具,帮你找到赚钱思路

有时候你知道什么方向赚钱,那么你要入场,该找哪个切入点呢?之前我都是瞎找,从朋友圈或者是公众号大家的推文,找到机会. 前段时间从别处知道了这个工具,我试着搜索了两个词语:副业 和 赚钱 ,得到了这样的一些数据. https://mmbiz.qpic.cn/mmbiz_png/FAlIsKMhcyw9f0aD3xd4AibxuUZond6JpR8kYZsccV6DcOdAML3TSsuwB4aO8Npsmc2PMibH7kXIKDG4JibaEJuCQ/640?wx_fmt=png&tp=webp

一起赚美元 | 通过一个小工具月入12万美元的秘诀

本文为一篇采访文章,翻译并推荐给大家 推荐理由:1.从自身小需求出发,先开发出满足自己需求的产品,然后将这个产品开放给市场.2.非常小的细分市场,也有可能做到年入百万美元.从小工具入手是非常好的思路.3.做边际成本递减的事,尽可能产品化与自动化.4.增长黑客的一个很棒的案例. 另外,你是否也发现了一些工具网站很小,但是却赚钱很厉害? ------ 译者:一只椰子 知识星球链接:https://t.zsxq.com/iAiIyfm 本文的主人公叫迈克,他在采访里面提到,自动化工具这一法宝已经轻松帮