之前xmake默认编译windows目标,debug模式下采用的是-Z7编译选项,内置的调试符号信息到obj文件里面
但是这种方式按msdn的文档上说,是属于旧式的调试符号文件格式,所以为了考虑后续的兼容性,xmake修改了默认的调试符号生成规则,
改为默认启用pdb符号文件,并且pdb的方式更为常用。。
这个行为的修改,并不会影响到xmake.lua的设置,如果在这个文件中,设置了启用调试符号:
lua
set_symbols("debug")
那么,编译debug版本的目标时,就会自动生成pdb文件,以tbox为例:
bash
$ xmake f -m debug
$ xmake
编译完成后,会自动在build
继续阅读 »
1. 超参数
到目前为止,已经涉及到了许多个超参数:
学习速率 $\alpha$
Momentum优化算法的 $\beta$
Adam优化算法的 $\beta_1,\beta_2,\epsilon$
网络层数 $L$
每个隐藏层的神经单元个数
学习率衰减 $decay\text{-}rate$
$batch\text{-}size$
继续阅读 »
xmake默认情况下是不会去生成pdb文件,就算是debug编译,启用了调试符号:
lua
set_symbols("debug")
也是不会生成额外的pdb文件,它会把所有调试符号内置到程序里面,如果要独立生成pdb文件,可以对xmake.lua进行如下修改:
```lua
-- 先禁用内置的调试符号开关
--set_symbols("debug")
-- 静态库目标
target("test")
set_kind("static")
-- 仅针对windows平台
if is_plat("windows") then
-- 启用pdb生成
add_cxflags("-ZI", "-Fd$(bui
继续阅读 »
更新日志
Method Swizzle(方法调配、方法混合、方法调和、方法混写) 是 Objective-C 运行时的黑魔法之一。我们可以通过 Swizzle 的手段,在运行时对某些方法的实现进行替换,这是 Objective-C 甚至说 Cocoa 开发中最为华丽,同时也是最为危险的技巧之一。Swizzle 使用了 Objective-C 的动态派发,对于 NSObject 的子类是可以直接使用的。
通过此方案,可以为那些『完全不知道其具体实现的』黑盒方法增加日志记录功能,这非常有助于程序调试。然而,次做法只在调试程序时有用。很少有人在调试程序之外的场合用上述『Method Swillze』来永久改动某个类的功能。不能仅仅因为
继续阅读 »
在编写Java程序时,Exception类的printStacktrace()可以打印异常堆栈,这个小工具极大的提高了调试效率;虽然不是一个好习惯,却很实用。习惯了Java编程,很希望 C/C++里也有这样的小工具可以帮助调试程序. 经过几天查找,发现其实每个系统都提供了打印调用堆栈的函数;这些函数是系统相关,这里仅以Linux下的函数作说明. Linux中共提供了三个函数用于打印调用堆栈:
继续阅读 »
工作一年多了,项目中真正写代码的时间其实并不多,更多时候是在调试代码或者维护已有代码。调试代码或者维护已有代码难免要去读代码,如果是自己写的代码,那么读不懂只能怪自己写得不好,如果是别人写的代码,读不懂也只能怪自己,技不如人呗,开个玩笑而已,读不懂别人的代码说不定不是你的问题,也许是别人写的代码易读性和可维护性都不好,才导致你读起来费劲,难以理解。所以我结合自己的coding和debug经验,谈谈一些关于写代码的想法,先从以下3点谈起:
继续阅读 »
最近有很多用户反馈xmake在windows上编译体验不是很好,不方便进行调试和开发。。
其实xmake的定位主要还是以直接编译为主,提供跨平台的编译和部署,不依赖第三方IDE工程,不过目前确实在windows的体验还不是很好
尽管我已经优化了在windows下的编译速度,并且提供了xmake run -d xxxx方式,直接加载调试器进行源码调试
但是毕竟整体开发上,没有IDE的支持,对于习惯IDE开发的用户来讲,就不是那么友好了。(虽然我个人觉得用编辑器+printf的方式已经够用了)
因此我下一步计划(原本打算先做好包管理的),打算优先开始支持对Visual Stdio工程文件的生成,到时候会通过project插件的方
继续阅读 »
Node.js代理服务器
出于信息安全的需求,很多公司对于员工电脑访问外网都会有很多特别的限制,比如某国内大型上市IT解决方案供应商,所有的员工电脑必须通过某个指定的HTTP代理服务器访问互联网资源,并且还要进行用户名密码的验证,导致很多无法设置代理服务器的软件以及仅支持socks5代理的软件都无法使用,甚至想要在调试应用的时候调用一些第三方api都需要做很多特殊设置。
比如正常的Node.js在做HTTP请求的时候,代码如下:
var http = require('http');
var opt = {
host: 'api.example.com', //要访问的服务器地址或者域名
port: 808
继续阅读 »
本书第六章的读书笔记,也是我这个系列的最后一篇读书笔记。后面7、8、9章分别讲的“测试、调试与重构”、“设计和架构的原则”以及“使用Lambda表达式编写并发程序”,因为笔记不好整理,就不写了,感兴趣的同学自己买书来看吧。
并行化流操作
继续阅读 »
最近由于TW技术雷达(Tech Radar)的机缘,同事向我们介绍了一个用于浏览器同步测试的工具 --- Browsersync,使用之后,发现它着实简单,而且十分炫酷。更重要的一点是,Browsersync可以同时在PC、平板、手机等设备下进项UI调试,换句话说,你在其中一个浏览器上的操作会同步到多个设备的多个浏览器上。
继续阅读 »