用 WinDbg 调试符号不全的程序

其实也就是记录一下用 WinDbg 调试 fHash 的一次过程,这个 bug 是由于没好好看文档造成的,我需要让 fHash 知道当前运行的操作系统是 32 位还是 64 位的,之后好去选择正确的 shell extension 文件。查文档看到了这个函数 IsWow64Process ,之后错误的以为 kernel32 中有这个函数就是 64 位操作系统,结果就已这个逻辑写下了错误的 64 位系统判断函数,和错误文件读取逻辑。


tstring tstrExeDirPath(pszExeFullPath);
tstring::size_type idx = tstrExeDirPath.rfind(_T("\\"));
tstrExeDirPath = tstrExeDirPath.substr(0, idx);

tstring tstrShlExtDll = tstrExeDirPath;
tstrShlExtDll.append(_T("\\fHashShlExt"));
if(IsWindows64())
    tstrShlExtDll.append(_T("64"));
tstrShlExtDll.append(_T(".dll"));

WIN32_FIND_DATA ffData;
HANDLE hFind = FindFirstFile(tstrShlExtDll.c_str(), &ffData);

bool bRet = (hFind != INVALID_HANDLE_VALUE);

if(bRet)
{
#if defined(UNICODE) || defined(_UNICODE)
    wcscpy_s(pszShlDllPath, MAX_PATH, tstrShlExtDll.c_str());
#else
    strcpy_s(pszShlDllPath, MAX_PATH, tstrShlExtDll.c_str());
#endif

   FindClose(hFind);
}

return bRet;

结果很自然,在 32 位的 Windows XP 上没有执行正确。但是测试环境没有 VisualStudio,而且用的是 Release 编译,也没有带着符号文件,这怎么调试呢。Windows XP 上装有 WinDbg,那么就用它来调试。

继续阅读“用 WinDbg 调试符号不全的程序”

JSToolNpp 1.15 Released

What’s New in JSToolNpp 1.15:

  • Change name to JSTool.
  • Added simple search in Json Viewer.
  • Fixed Json Viewer and editor linkin bug.
  • Fixed Json Viewer utf-8 bug.
  • Other tweaks.

Download links:

http://jstoolnpp.googlecode.com/files/JSMinNPP.1.15.uni.zip

http://sourceforge.net/projects/jsminnpp/files/latest/download

JSMinNpp 1.13 Released

What’s New in JSMinNpp 1.13:

  • Performance improved (JSFormat will be about 2X faster).
  • Linked editor with Json Viewer: Clicking a data node in Viewer, editor will navigate to corresponding line.
  • Added a logo.

Download links:
https://jstoolnpp.googlecode.com/files/JSMinNPP.1.13.uni.zip
http://sourceforge.net/projects/jsminnpp/files/Uni/JSMinNPP.1.13.uni.zip/download

Java, JNI and Notepad++ Plugin

最近把之前写的 JsFormatter 用 Java 移植了一下,于是想着能不能用 JNI 作为包装,让 Notepad++ 的插件调用 Java 版的算法,于是有了下面的两个项目:
https://github.com/sunjw/JsToolJava
https://github.com/sunjw/JsFormatterJavaNppPlugin

先说一下怎么跑这个插件,将 JsFormatterJavaNppPlugin 编译得到的 JSMinJava.dll 放到 npp 的插件目录,之后将 JsToolJava.jar 和 commons-lang-2.6.jar 也放入插件目录,最后将 %JAVA_HOME%\bin\client 添加到 PATH 环境变量。这样应该就能运行 JSMinJava 插件,其中 JSFormat 功能就是用 JNI 调用 Java 执行的。这个在 npp 6.3, JRE 1.6 上测试成功,其他配置不一定能正常工作。

继续阅读“Java, JNI and Notepad++ Plugin”

[转] Mount Nexus 4 on Fedora 17

原贴地址:
http://forums.fedoraforum.org/showthread.php?t=286547

Shiny new toy! I wrote a quick howto blog post for getting something working until a better solution comes along.

Link to blog edited out as per sub-forum rules — DBelton

======================

继续阅读“[转] Mount Nexus 4 on Fedora 17”

JSMinNpp 1.12 Released

What’s New:
1.12
Fix a bug in JSON Viewer.
Update JsonPP.
Fix “unexpect space” of JSLint.
Add an option to keep indent in empty line.
Fix “finally” bug.
Change project site to http://sunjw.us/jsminnpp/

Download links:
https://jstoolnpp.googlecode.com/files/JSMinNPP.1.12.uni.zip
http://sourceforge.net/projects/jsminnpp/files/Uni/JSMinNPP.1.12.uni.zip/download

CMFileManager for ICS Standalone

CyanogenMod 10 中自带了一个 CMFileManager 的文件管理器,很好用,可以提升到 root 权限进行操作,有类似 Windows 资源管理器的路径导航栏,界面也很简洁、漂亮。这两天给它改了改,移植到 CM 9 之上,并且成为一个可独立安装的 APK 包,不再需要放到 /system/app/ 中。

CyanogenMod 10 has a file manager app called “CMFileManager”, which is simple and easy to use and can run as ‘root’. It has holo style UI. Now, I’ve make a standalone installation package of CMFileManager, you do not need to put it into /system/app/ anymore.

继续阅读“CMFileManager for ICS Standalone”