为什么我的堆栈跟踪缺少步骤

本文关键字:跟踪 我的 堆栈 为什么 | 更新日期: 2023-09-27 18:22:23

我记录的堆栈跟踪似乎缺少一个步骤。

private void StartLoadingResources(DataService separateDataService)
{
    ...
    batchResource.Resources.Add(key, new List<string>());
    // batchResource.Resources is the Dictionary object involved
    ...
}

为什么堆栈跟踪直接从StartLoadingResourcesInsert(缺少Add步骤)?

System.AggregateException: One or more errors occurred. ---> System.ArgumentException: An item with the same key has already been added.
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at MyApp.Importer.StartLoadingResources(DataService separateDataService) in ****'MyApp'MyApp'Importer.cs:line 313
   at MyApp.Importer.<Execute>b__5() in ****'MyApp'MyApp'Importer.cs:line 142
   at System.Threading.Tasks.Task.Execute()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at MyApp.Importer.Execute() in ****'MyApp'MyApp'Importer.cs:line 157
   at MyApp.Program.Execute() in ****'MyApp'MyApp'Program.cs:line 252
   at MyApp.Program.Main(String[] args) in ****'MyApp'MyApp'Program.cs:line 47
---> (Inner Exception #0) System.ArgumentException: An item with the same key has already been added.
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at MyApp.Importer.StartLoadingResources(DataService separateDataService) in ****'MyApp'MyApp'Importer.cs:line 313
   at MyApp.Importer.<Execute>b__5() in ****'MyApp'MyApp'Importer.cs:line 142
   at System.Threading.Tasks.Task.Execute()<---

代码编译为Debug,Build选项中的"Optimize code"未选中。

为什么我的堆栈跟踪缺少步骤

Dictionary<TKey, TValue>上的Add方法只调用Insert,假设它是一个1行方法,编译器只内联了该方法调用,因为即使没有启用优化,它也很琐碎。