N******K 发帖数: 10202 | 1 调试程序A
A1是A里面的一个函数
A1可以是独立函数或者类的成员函数
在一个函数A1的某处断点停下之后,临时写一段程序B B调用另外一个程序C
程序B 可以调用函数A1内部的所有变量 如果A1是类的成员函数就可以调用this
然后运行程序B 程序B可以画个图 显示一个表 什么的
程序C提供画图显示表格的各种基本函数 |
N******K 发帖数: 10202 | 2 这是搞算法设计 必须要的调试手段
我目前调试c++算法的办法:
简单的用tooltip看看 脑子里分析
复杂的存成文件 然后matlab打开 运行各种检测分析程序
所以对于c++IDE 我非常看重tooltip 和 variable window
【在 N******K 的大作中提到】 : 调试程序A : A1是A里面的一个函数 : A1可以是独立函数或者类的成员函数 : 在一个函数A1的某处断点停下之后,临时写一段程序B B调用另外一个程序C : 程序B 可以调用函数A1内部的所有变量 如果A1是类的成员函数就可以调用this : 然后运行程序B 程序B可以画个图 显示一个表 什么的 : 程序C提供画图显示表格的各种基本函数
|
x****u 发帖数: 44466 | 3 这种事情用非解释性语言做有很多问题,不过也可以试试vc的有限支持,修改后运行。
【在 N******K 的大作中提到】 : 调试程序A : A1是A里面的一个函数 : A1可以是独立函数或者类的成员函数 : 在一个函数A1的某处断点停下之后,临时写一段程序B B调用另外一个程序C : 程序B 可以调用函数A1内部的所有变量 如果A1是类的成员函数就可以调用this : 然后运行程序B 程序B可以画个图 显示一个表 什么的 : 程序C提供画图显示表格的各种基本函数
|
N******K 发帖数: 10202 | 4 vc提供一个opencv的调试工具 在opencv框架内基本可以做到我说的那些功能
但是对于一般情况 怎么搞?
【在 x****u 的大作中提到】 : 这种事情用非解释性语言做有很多问题,不过也可以试试vc的有限支持,修改后运行。
|
x****u 发帖数: 44466 | 5 这种性能不是普通二进制可执行文件支持的,非要做也要付出代价。
【在 N******K 的大作中提到】 : vc提供一个opencv的调试工具 在opencv框架内基本可以做到我说的那些功能 : 但是对于一般情况 怎么搞?
|
k**********g 发帖数: 989 | |
N******K 发帖数: 10202 | 7 这是一个山寨版的matlab 得用cee这种语言
【在 k**********g 的大作中提到】 : http://www.ceemple.com/ : never used, 打酱油路过
|
N******K 发帖数: 10202 | 8 这就是matlab牛逼的地方 你们不服不行
【在 N******K 的大作中提到】 : 调试程序A : A1是A里面的一个函数 : A1可以是独立函数或者类的成员函数 : 在一个函数A1的某处断点停下之后,临时写一段程序B B调用另外一个程序C : 程序B 可以调用函数A1内部的所有变量 如果A1是类的成员函数就可以调用this : 然后运行程序B 程序B可以画个图 显示一个表 什么的 : 程序C提供画图显示表格的各种基本函数
|
g*****g 发帖数: 34805 | 9 脚本语言能做到不奇怪,Java+JRebel也能做到。C++就比较困难了。归根到底是语言问
题。
【在 N******K 的大作中提到】 : 这就是matlab牛逼的地方 你们不服不行
|
x****u 发帖数: 44466 | 10 这不是语言而是OS问题,你想运行时修改,需要对进程内整个环境可控可复制,但裸二
进制进程因为效率原因做不到。
【在 g*****g 的大作中提到】 : 脚本语言能做到不奇怪,Java+JRebel也能做到。C++就比较困难了。归根到底是语言问 : 题。
|
|
|
g*****g 发帖数: 34805 | 11 这当然是语言问题,有VM的基本都能做到。
【在 x****u 的大作中提到】 : 这不是语言而是OS问题,你想运行时修改,需要对进程内整个环境可控可复制,但裸二 : 进制进程因为效率原因做不到。
|
x****u 发帖数: 44466 | 12 动态语言才能做得到。
【在 g*****g 的大作中提到】 : 这当然是语言问题,有VM的基本都能做到。
|
g*****g 发帖数: 34805 | 13 不跟你说了吗,Java+JRebel就能做到,同样JVM系语言都能做到。你不是想说java,
scala是动态语言吧?
【在 x****u 的大作中提到】 : 动态语言才能做得到。
|
x****u 发帖数: 44466 | 14 和VM没关系。
C++写个jni模块就不行,python就可以。还是语言的特性更重要。
【在 g*****g 的大作中提到】 : 不跟你说了吗,Java+JRebel就能做到,同样JVM系语言都能做到。你不是想说java, : scala是动态语言吧?
|
g*****g 发帖数: 34805 | 15 C++没VM,Python显然是有VM的。还不是我说的。Scala就是一个十足的反例,静态语言
一样能做脚本使,只要有VM。
【在 x****u 的大作中提到】 : 和VM没关系。 : C++写个jni模块就不行,python就可以。还是语言的特性更重要。
|
x****u 发帖数: 44466 | 16 你说的不是VM,而是二进制对象生存周期管理机制。这个东西是有很大代价的。
【在 g*****g 的大作中提到】 : C++没VM,Python显然是有VM的。还不是我说的。Scala就是一个十足的反例,静态语言 : 一样能做脚本使,只要有VM。
|
g*****g 发帖数: 34805 | 17 你就别撑了,VM本来就是管理对象生命周期的。
【在 x****u 的大作中提到】 : 你说的不是VM,而是二进制对象生存周期管理机制。这个东西是有很大代价的。
|
x****u 发帖数: 44466 | 18 JVM做的事情多了去了。。。
你可以看看MS的CLR是如何从COM,COM+,DCOM,.net一路走来的。每一个新特性都是权
衡利弊后才加入的。
【在 g*****g 的大作中提到】 : 你就别撑了,VM本来就是管理对象生命周期的。
|
g*****g 发帖数: 34805 | 19 多了去没错,GC是最重要的一部分。市面上没听说啥有VM没GC的主流语言,你就别死撑
了。
【在 x****u 的大作中提到】 : JVM做的事情多了去了。。。 : 你可以看看MS的CLR是如何从COM,COM+,DCOM,.net一路走来的。每一个新特性都是权 : 衡利弊后才加入的。
|
x****u 发帖数: 44466 | 20 这和GC毛关系都没有,您老对底层了解太少。
VC支持运行时修改,也不过是给所有debug版的数据都加了包装,牺牲效率而已,不需
要更多的东西了。
是权
【在 g*****g 的大作中提到】 : 多了去没错,GC是最重要的一部分。市面上没听说啥有VM没GC的主流语言,你就别死撑 : 了。
|
|
|
g*****g 发帖数: 34805 | 21 当然关系大了,有GC就能instrument,能运行时替换类,包括第三方代码。你用VC不重
编译来给
第三方代码debug看看?事实就是我说的,有VM和没VM是能不能做到这个的主要区别。
【在 x****u 的大作中提到】 : 这和GC毛关系都没有,您老对底层了解太少。 : VC支持运行时修改,也不过是给所有debug版的数据都加了包装,牺牲效率而已,不需 : 要更多的东西了。 : : 是权
|
x****u 发帖数: 44466 | 22 真是概念混淆啊。
能否debug第三方代码,涉及到组件对reflection的支持,和GC是两回事。
Reflection在C++编程中是高代价的,比如Windows的COM Automation技术。
【在 g*****g 的大作中提到】 : 当然关系大了,有GC就能instrument,能运行时替换类,包括第三方代码。你用VC不重 : 编译来给 : 第三方代码debug看看?事实就是我说的,有VM和没VM是能不能做到这个的主要区别。
|
g*****g 发帖数: 34805 | 23 你才混淆呢,我们说的是debug过程中添加修改代码,包括第三方的。在VM里可以做到
。没VM就抱歉了,只能通过预先的instrument,没instrument的第三方是万万不行。VS
还做什么debug, release version。为嘛Java就不用呢?
【在 x****u 的大作中提到】 : 真是概念混淆啊。 : 能否debug第三方代码,涉及到组件对reflection的支持,和GC是两回事。 : Reflection在C++编程中是高代价的,比如Windows的COM Automation技术。
|
x****u 发帖数: 44466 | 24 因为对象支持reflection需要以性能为代价。
Automation的COM对象就没问题,但你最好展开看看代码和二进制层间发生了什么。
【在 g*****g 的大作中提到】 : 你才混淆呢,我们说的是debug过程中添加修改代码,包括第三方的。在VM里可以做到 : 。没VM就抱歉了,只能通过预先的instrument,没instrument的第三方是万万不行。VS : 还做什么debug, release version。为嘛Java就不用呢?
|
g*****g 发帖数: 34805 | 25 我没说支持reflection不需要性能代价,但支持reflection本来就是VM的标志功能之一。
你明明反复的支持我的结论,偏偏要说我说的不对。Java/Scala已经完全说明你说的动
态语言才行的推论是错误的。
【在 x****u 的大作中提到】 : 因为对象支持reflection需要以性能为代价。 : Automation的COM对象就没问题,但你最好展开看看代码和二进制层间发生了什么。
|
x****u 发帖数: 44466 | 26 Java就有大量动态语言的特性。
事实上用C++写dual接口的COM组件,也可以视为动态语言。组件之间的逻辑完全可以热
修改,这东西还有个兄弟叫javascript。。。
一。
【在 g*****g 的大作中提到】 : 我没说支持reflection不需要性能代价,但支持reflection本来就是VM的标志功能之一。 : 你明明反复的支持我的结论,偏偏要说我说的不对。Java/Scala已经完全说明你说的动 : 态语言才行的推论是错误的。
|
g*****g 发帖数: 34805 | 27 你干脆说有VM都有动态语言特性完了,还是没推翻我的结论。
【在 x****u 的大作中提到】 : Java就有大量动态语言的特性。 : 事实上用C++写dual接口的COM组件,也可以视为动态语言。组件之间的逻辑完全可以热 : 修改,这东西还有个兄弟叫javascript。。。 : : 一。
|
x****u 发帖数: 44466 | 28 VM还真不一定有动态语言的特性,比方说OSX就不是特别原教旨主义,什么都自己设定。
【在 g*****g 的大作中提到】 : 你干脆说有VM都有动态语言特性完了,还是没推翻我的结论。
|
w***g 发帖数: 5958 | 29 你去学下gdb的scripting吧,程序B得用script写。如果你非要用C++写的话可以这样:
1. 先在程序A里预留一个stub,功能是动态加载一个动态链接库并调用其中的一个函数。
2. 调试A1断点以后写程序B并编译成动态链接库。
3. 在gdb里面断点后调用stub,动态加载并调用B。
你做research的话还是matlab算了,何苦用C++,连个趁手的IDE都没有。
【在 N******K 的大作中提到】 : 调试程序A : A1是A里面的一个函数 : A1可以是独立函数或者类的成员函数 : 在一个函数A1的某处断点停下之后,临时写一段程序B B调用另外一个程序C : 程序B 可以调用函数A1内部的所有变量 如果A1是类的成员函数就可以调用this : 然后运行程序B 程序B可以画个图 显示一个表 什么的 : 程序C提供画图显示表格的各种基本函数
|
S*******s 发帖数: 13043 | 30 python是脚本语言。用pydev却不能动态修改 |