首页 新闻 会员 周边 捐助

c# 怎样溯源

0
悬赏园豆:5 [已解决问题] 解决于 2023-10-24 11:44

因想知道红线二处this.Value 字符型公共变量在哪赋的值,要溯源红线一处SignalVarCache 方法体的上游在哪引用,但显示有57个引用,我除了57个引用逐一设断点测试这笨办法,还有更优方法找出上游引用吗?谢谢!

c#
tea2007的主页 tea2007 | 初学一级 | 园豆:3
提问于:2023-10-18 11:21

这种一般是从逻辑的开始点找……+

echo_lovely 1年前
< >
分享
最佳答案
0

Value应该是一个属性吧?下面是我的一个方案


抛出异常时你可以在堆栈信息里看到调用源,就是这个StackTrace

收获园豆:3
复制粘贴机器人 | 小虾三级 |园豆:720 | 2023-10-18 13:38

我的Value是在common.cs文件中这样定义,应该不是属性吧。故意让它出错抛异常?

tea2007 | 园豆:3 (初学一级) | 2023-10-18 14:27

我这个怎么让它抛异常?

tea2007 | 园豆:3 (初学一级) | 2023-10-18 14:28

@tea2007: 不是让它抛异常,我是说抛异常时,里面就有StackTrace可以溯源。所以这里可以主动打印这个StackTrace
你这个Value属性只有get

this.Value 字符型公共变量在哪赋的值

那你要看_value在哪赋值。

复制粘贴机器人 | 园豆:720 (小虾三级) | 2023-10-18 14:37

@复制粘贴机器人: 抛异常了,要怎么找?

tea2007 | 园豆:3 (初学一级) | 2023-10-18 14:57

@tea2007: 查看详细信息。
我前面说的抛异常只是举个例子,不需要主动来制造异常

复制粘贴机器人 | 园豆:720 (小虾三级) | 2023-10-18 15:04

@复制粘贴机器人: 我这个异常能找吗?也不是主动制造的

tea2007 | 园豆:3 (初学一级) | 2023-10-18 15:08

@tea2007: 不知道,应该不能。这个异常是这个集合在循环的同时发生了修改触发的,不是你要找的Value

复制粘贴机器人 | 园豆:720 (小虾三级) | 2023-10-18 15:18

@复制粘贴机器人: 你意思是涉及到Value的异常才行?

tea2007 | 园豆:3 (初学一级) | 2023-10-18 15:37

@tea2007: 是的,不要纠结异常了

        public void AfterSetValue()
        {
            StackTrace st = new StackTrace(true);
            var frames = st.GetFrames();
            StringBuilder sb = new StringBuilder();
            foreach (var item in frames)
            {
                sb.AppendLine($"FileName: {item.GetFileName()}, Line: {item.GetFileLineNumber()}, MethodName: {item.GetMethod()?.Name}");
            }
            Console.WriteLine(sb.ToString());
        }
复制粘贴机器人 | 园豆:720 (小虾三级) | 2023-10-18 15:43

@复制粘贴机器人: 我搜 _Value = 找到 _Value = Value 再搜 Value = 找到下图,应该是这里

tea2007 | 园豆:3 (初学一级) | 2023-10-18 16:28

@tea2007:

没看到你这有_value

复制粘贴机器人 | 园豆:720 (小虾三级) | 2023-10-18 16:36

@复制粘贴机器人: 谢谢,vs自带溯源功能,看楼下我 2023-10-24 11:40的回复

tea2007 | 园豆:3 (初学一级) | 2023-10-24 11:42

@tea2007: 666

复制粘贴机器人 | 园豆:720 (小虾三级) | 2023-10-24 11:44
其他回答(2)
0

在Value的get处打印堆栈就行了。

收获园豆:1
花飘水流兮 | 园豆:13615 (专家六级) | 2023-10-20 14:11

谢谢,vs自带溯源功能,看楼下我 2023-10-24 11:40的回复

支持(0) 反对(0) tea2007 | 园豆:3 (初学一级) | 2023-10-24 11:43
0

set方法放个断点不就行了吗?

收获园豆:1
生命体验之kevin-Y | 园豆:474 (菜鸟二级) | 2023-10-21 09:16

vs自带溯源(找调用源)功能

支持(0) 反对(0) tea2007 | 园豆:3 (初学一级) | 2023-10-24 11:40

@tea2007:

留意一下断点界面,会有一个调用堆栈,每一行都是一个调用,双击会跳转到相关代码

支持(0) 反对(0) 生命体验之kevin-Y | 园豆:474 (菜鸟二级) | 2023-10-24 12:06

@生命体验之kevin-Y: 谢谢

支持(0) 反对(0) tea2007 | 园豆:3 (初学一级) | 2023-10-24 14:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册