• 调试时显示CStringArray的内容


    使用windbg时无法很方便的查看CStringArray里的内容,于是写了下面的脚本。

     

    脚本内容如下:

    r $t1 = &${$arg1};
    r $t2 = @@c++(*(unsigned int*)(@$t1+8));
    .printf "Total elements:%N\n", @$t2;
    .for (r $t0=0; @$t0<@$t2; r $t0=@$t0+1)
    {
        da @@c++(*(unsigned int*)((*(unsigned int*)(@$t1+4))+4*@$t0));
    }
    r $t0 = 0;
    r $t1 = 0;
    r $t2 = 0;

     

    将其保存为ShowStrAry.txt放入与windbg.exe相同目录下,就可以使用了。

    使用方法:输入命令$$>a< ShowStrAry.txt 变量名

    工程link属性里要有/pdbtype:con才会起作用

    注:vc也是可以看的,只是比较麻烦,

    比如要看第n个CString的值,只要在watch变量里填入以下内容就可以看了

    (char*)(*(unsigned*)(*(unsigned*)((unsigned)&aryString+4)+4*n))

    还是用windbg方便。

  • 相关阅读:
    《将博客搬至CSDN》
    所谓找链表中点
    虚函数
    编辑距离
    数组移位
    DFA
    Single Number III
    XOR异或解惑
    First Bad Version
    while(!in.empty()) 和 while(in.size())
  • 原文地址:https://www.cnblogs.com/xueguangfeng/p/windbg_ShowStrAry.html
Copyright © 2020-2023  润新知