比较 .net 1.1 和 .net 2.0 中同一应用程序之间的程序流程
我正在考虑将我们正在使用 Visual Studio 2003 / .NET 1.1 开发的应用程序升级到 Visual Studio 2008 / .NET 2.0。
现在我正在测试东西,发现我有一个可重现的情况,其中 .NET 1.1 版本做了它应该做的事情,而 .NET 2.0 版本(相同的代码)最终以无限递归(递归是故意的) ,但它应该限制为 2 个级别..)
市场上是否有任何东西可以比较两个正在运行的应用程序的程序流程,例如并行调试器或其他东西,或者我是否必须单步执行这两个应用程序单独应用程序并尝试手动查找流程/状态的差异?
我很确定要么是这样,要么添加大量日志代码,但也许有人有一个好主意/技巧来追踪这个问题?
(仅供参考,我目前最好的猜测是它与数据绑定有关,因为 .NET 1.1 和 .NET 2.0 数据绑定之间还存在其他[致命]差异......)
I'm looking at upgrading an application we're developing here using Visual Studio 2003 / .NET 1.1 to Visual Studio 2008 / .NET 2.0.
Now I was testing stuff, and found that I have a reproducable case in which the .NET 1.1 version does what it is supposed to do, while the .NET 2.0 version (same code) ends up in an infinite recursion (the recursion is intentional, but it is supposed to be limited to 2 levels..)
Is there anything on the market for comparing program flow of two running applications, like a side-by-side debugger or something, or will I have to resort to stepping through both apps separately and trying to find the differences in flow/state manually?
I'm pretty sure it will be either that or adding a lot of logging code, but maybe anyone has a great idea / tip to track this down?
(FYI, my best guess at this moment is that it has something to do with data binding, because there were other [fatal] differences between .NET 1.1 and .NET 2.0 data binding...)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您知道递归发生在哪里,那么也许有一些放置得当的断点,以及大量使用“观察”窗口,这样您就可以看到用于决定是否需要另一次递归旅行的值,并且您应该能够找出它们的分歧点。
另一种选择是使用 Diff 工具(例如 Sourcegear 的 DiffMerge)来比较您所做的更改代码库的两个版本之间。 我不知道框架的不同版本会以不同的方式处理相同的代码,所以我敢打赌,差异在于您在升级到 2.0 时修改的代码。
If you know where the recursion if happening, then maybe some well-placed breakpoints, along with copious use of the "Watch" window so you can see the values that are used to decide if another recursive trip is necessary, and you should be able to find where they diverge.
Another option would be using a Diff tool (like Sourcegear's DiffMerge) to compare the changes you've made between the two versions of your code base. I don't know that the different versions of the framework would process the same code differently, so I would bet that the difference is code that you've modified as part of your upgrade to 2.0.