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)\Embarcadero\RAD Studio\12.0\source\Visualizers\StringListVisualizer.pas
StringList查看器
XE5中delphi起作用,可以看到每行的元素值,c++builder怎么调不出来啊,原来是strings只有delphi的,在option里的Debugger Options\Visualizers看到没有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

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

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

原文地址:https://www.cnblogs.com/jijm123/p/10256653.html

时间: 2024-10-14 00:28:44

Debugger DataSet 调试时查看DataSet的相关文章

VS2010下调试时查看DataTable.Rows的值

调试的时候遇到一个问题:不知道怎么在自动窗口或者添加监视那里查看DataSet或者DataTable的具体的值.度娘了一下很多都是添加DataTable.Rows[][]监视,但是一行一列地看还是有点麻烦.可能也是没找到点子上...后来问了一下说是工具箱里有一个DataSet的控件可以用上,但是还没试过,效果还有待检验... 昨晚调试的时候实在是蛋痛的时候在自动窗口里瞎点了十来分钟居然让我找到了... 具体点击路径:Rows--base--非公共成员--System--list-base--结果

4种Delphi IDE的调试时查看内存的方法,太酷了!

1.ctrl+alt+m,可以查看每个函数过程的内存位置 2.Ctrl+Alt+C 查看代码对应的汇编 3.原来用delphi看变量信息一直是简单的用watch看,但是有时候变量值直接用特定类型看总是不方便.于是上网找到察看方法,特列于此:在watch中输入"变量名,nm",其中n为你要查看的内存字节数.比如察看变量名为 a 的地址的18个字节,则写入a,18m即可. 4.在Delphi 7调试过程中查看内存http://www.cnblogs.com/chenhs/archive/2

Eclipse调试时Application XXX is waiting for the debugger to attach的提示

原文链接: http://blog.csdn.net/star_huang/article/details/7678845 最近Eclipse调试时总是出现Application XXX  is waiting for the debugger to attach的提示, 有的时候提示框会自动关闭并进入调试状态,但有的时候进入的是运行状态,最烦恼的是有时候模拟器上一直停留此对话框,反复调试依旧如此,老衲甚是苦恼. 个人感觉是某些调试状态尚未恢复或某些数据正在处理,在网上搜罗了下,归纳如下几种解决

调试时设置条件断点

一个好的调试器,能够帮助程序员处理很多自动化的工作.试想下列的情形: 错误是发生在一个循环当中,只在循环遍历了若干次以后,才会出现. 错误只在程序中某个变量为一个特定的值,才会出现,而这个变量的值是在程序运行的过程中随机设置的. 多个线程都要调用同一个函数,而你只想在某几个线程执行这个函数的时候,中断程序的执行. 在上面列出来几种情况当中,如果调试器不能提供一个有效的方法帮助我们设置断点的话,调试这种程序将会是很痛苦的一件事.在第一种情况当中,用户不得不在循环中设置断点,并且要记住自己按下F5的

VS2015--在 Visual Studio 中调试时映射调用堆栈上的方法

https://msdn.microsoft.com/zh-cn/library/dn194476.aspx 在 Visual Studio 中调试时映射调用堆栈上的方法 创建代码图,以便在调试时对调用堆栈进行可视化跟踪.你可以在图中进行标注以跟踪代码执行的操作,以便专注于查找 Bug. 生成调用堆栈图 1 开始调试.(键盘:"F5") 2 在你的应用进入中断模式或你单步执行某一函数之后,请选择"代码图".(键盘:Ctrl + Shift + `) 当前的调用堆栈在

让delphi在调试时不监视指定异常

在调试程序时,可能需要让delphi不拦截某些异常,这时我们可以设置debugger options中的language exceptions来完成. 下面举例说明如何让delphi在调试时不拦截EOleError, [@[email protected]] 打开Tools|Options|Debugger Options|Language Exceptions在右面的Excetpion types to ignore列表中增加EOleError即可. 同样,当你在调试程序时,在delphi弹出

vscode c++ 编译生成后,调试时无法命中断点

1 //test.cpp 2 #include <stdio.h> 3 int g_var = 0; 4 void print_line(char *str) 5 { 6 if (str != NULL) 7 printf("%s\r\n", str); 8 else 9 printf("null string\r\n"); 10 } 11 int main (int argc, char **argv) 12 { 13 int l_var = 1; 1

判断dataset为空以及dataset中是否有表以及表中是否有数据

一般都知道使用dataset时先判断它是否为空,但我开始对ds为空的概念有点模糊,在网上查了下,结果如下:DataSet为空和DataSet中没有表是两回事. DataSet为空,或者说DataSet类型的引用为空是指这个引用型变量未指向任何new出来的内存块. ds:DataSet if(ds == null) //ds为空 if(ds.Tables.Count == 0) //ds中没有表 if(ds.Tables.Count == 1 && ds.Tables[0].Rows.Cou

解决GDB调试时“ No symbol table is loaded. Use the &quot;file&quot; command”问题

1.解决的办法 : GDB调试时使用list命令时出现 “No symbol table is loaded. Use the "file" command”提示,其实是C编译器的选项CFLAGS没有设置好,gcc -o进行编译时不用不用写“-g”选项,只需在makefile文件开头写上“CFLAGS = -g”在编译时编译器就会自动使用CFLAGS的设置了. 2.探索的过程: 我的makefile文件是这样编写的: “make clear”.“make main”.“gdb main