• Debugger DataSet 调试时查看DataSet


    delphi  跟踪调试的时候查看DataSet数据记录 Ctrl+F7
    调试 增强工具DataSet
    http://edn.embarcadero.com/article/40268

    http://docwiki.embarcadero.com/RADStudio/XE6/en/Debugger_Visualizers

    http://docwiki.embarcadero.com/RADStudio/XE6/en/What%27s_New_in_Delphi_and_C++Builder_2010#Debugger_Changes

    http://www.jed-software.com/xepp_screen.htm

    http://www.soundvibe.net/blog/tcolor-visualizer/

    Delphi 2010 Feature Highlight - Debugger Visualizers
    Debugger Example
    D:Program Files (x86)EmbarcaderoRAD Studio12.0sourceVisualizersStringListVisualizer.pas
    StringList查看器
    XE5中delphi起作用,可以看到每行的元素值,c++builder怎么调不出来啊,原来是strings只有delphi的,在option里的Debugger OptionsVisualizers看到没有c++描述支持

     TStringList *ls;
     ls = new TStringList();
     ls->Add("aaa");
     ls->Add("bbb");
     ls->Add("ccc");
     delete ls;
     ls = NULL;
      sl := TStringList.Create;
      sl.Add('aaa');
      sl.Add('bbb');
      sl.Add('ccc');
      FreeAndNil(sl);

    Da

    日期变量查看器
    teTimeVisualizer.pas
    官方提供的时间类型观察器,如果禁用的话,只可以看到float类型的数字,看不到日期格式,太不方便了,delphi和c++builder都可以。
     TDateTime  mydt;
     mydt = TDateTime::CurrentDateTime();
    http://stackoverflow.com/questions/2556146/improve-speed-of-own-debug-visualizer-for-delphi-2010
    http://delphi.netcode.cz/text/tdataset-debug-visualizer.aspx
    http://bbs.cnpack.org/redirect.php?tid=3323&goto=lastpost&styleid=1&sid=3NVH51
    ---------------------

    DebugSvcs: IOTADebuggerServices;
    DebugSvcs.CurrentProcess.CurrentThread.Evaluate()

    IOTAThread.Evaluate

    TDataSet
    在Delphi里,用IOTAThread.Evaluate方法可以成功调用ClientDataSet和ADOQuery的SaveToFile方法保存文件,然后在DataSetVisualizer里分别用ClientDataSet和ADOQuery的LoadFromFile方法装载,然后关联DataSource、DBGrid,就可以显示了,速度极快!这样Delphi就解决了!
    但是上述方法不能解决c++builder,在cb环境下IOTAThread.Evaluate调用SaveToFile方法不成功,获取属性可以成功,比如Expression="ADOQuery1->RecordCount"之类可以成功,是不是XE的bug还是方法不对,也许根本不支持方法的调用。再找找吧
    CB里ClientDataSet,有XMLData属性,是数据集的xml数据,可以取到,然后赋值给调试器的ClientDataSet,这样也就解决了。
    CB里的ADOQuery怎么办,他没有类似的XMLData熟悉啊
    另外,针对cb,还有用IOTAProcess.ReadProcessMemory()方法尝试读取内存地址,再转换成DataSet不知行不行
    cds1->SaveToFile("c:\a",1) 这个可以成功,放在Evaluate/Modify窗口的Expression表达是里输入cds1->SaveToFile("c:\a",1)可以成功,文件也存上了。
    用此方法可以了。
    但是调用cds1->ClassName()
    还是回出现错误E2122 Function call terminated by unhandled exception 0xc0000005 at address 0x5006677d

    大功告成
    可以查看数据集了

    ---------------------

  • 相关阅读:
    对Java字符串的探究
    类加载器操作三原则[译]
    Android小游戏:功夫蛇 团队开发经验总结
    octopress第三方插件:博文同步工具syncPost
    PAT 1061
    关于软件工程的一些看法
    Python3+Selenium2完整的自动化测试实现之旅(三):Selenium-webdriver提供的元素定位方法
    Python3+Selenium2完整的自动化测试实现之旅(二):IE和Chrome浏览器驱动配置
    Python3+Selenium2完整的自动化测试实现之旅(一):自动化测试环境搭建
    Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件
  • 原文地址:https://www.cnblogs.com/jijm123/p/10256653.html
Copyright © 2020-2023  润新知