调试版本和发布版本之间的调用堆栈行号可以不同吗?

Can callstack line numbers differ between debug and release builds?

我对客户发给我的调用堆栈感到困惑。客户的版本当然是发布版本,但异常的行号没有意义。

刚才我注意到在指定的行号上面有一个#if DEBUG...#endif 块。

此块是否已删除 by/for 编译器,导致调试和发布版本之间的行号不同,如果在指定位置的代码中某处存在#if DEBUG...#endif 块?

如进一步测试和上面的链接和评论所示:行号可能因各种 JIT 优化原因而不同,但不仅仅是因为 #if...#endif 块。