Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ visual studio调用堆栈窗口不显示文件名_C++_Visual Studio_Visual Studio 2017_Filenames_Callstack - Fatal编程技术网

C++ visual studio调用堆栈窗口不显示文件名

C++ visual studio调用堆栈窗口不显示文件名,c++,visual-studio,visual-studio-2017,filenames,callstack,C++,Visual Studio,Visual Studio 2017,Filenames,Callstack,我正在Visual Studio中调试一个程序,我想知道为什么我的程序会在特定单元(源代码文件)的函数旁边传递 我以为调用堆栈会显示这一点,但事实似乎并非如此。此外,可显示条目列表甚至没有提到文件名: 显示模块名称 显示参数类型 显示参数名称 显示参数值 显示行号 显示字节偏移量 =>没有“显示文件名”,尽管“显示行号”意味着文件名应该是已知的 我正在使用Visual Studio Professional 2017 for Windows桌面 这是一个配置问题,在我的VisualStudi

我正在Visual Studio中调试一个程序,我想知道为什么我的程序会在特定单元(源代码文件)的函数旁边传递 我以为调用堆栈会显示这一点,但事实似乎并非如此。此外,可显示条目列表甚至没有提到文件名:

  • 显示模块名称
  • 显示参数类型
  • 显示参数名称
  • 显示参数值
  • 显示行号
  • 显示字节偏移量
=>没有“显示文件名”,尽管“显示行号”意味着文件名应该是已知的

我正在使用Visual Studio Professional 2017 for Windows桌面

这是一个配置问题,在我的VisualStudio安装中不存在(如果存在,哪个版本有此功能),还是在VisualStudio中根本没有预见到

为了更好地理解,我的调用堆栈如下所示:

<product>.dll!<first_class>::<first_class>(double dFy, double dFx) Line 102 C++
<product>.dll!<subfunction>(double dFv, double dFh) Line 1450   C++
<product>.dll!<subsubfunction>(double dFv, double dFh, int number) Line 1672    C++
...
.dll!::(双DFY,双DFX)102线C++
.dll!(双DFV,双DFH)线路1450 C++
.dll!(双DFV,双DFH,INT数)1672线C++
...
而我想看到的是:

<product>.dll!<first_class>::<first_class>(double dFy, double dFx) File <file1.c> Line 102  C++
<product>.dll!<subfunction>(double dFv, double dFh) File <file2.c> Line 1450    C++
<product>.dll!<subsubfunction>(double dFv, double dFh, int number) File <file2.c> Line 1672 C++
...
.dll!::(双DFY,双DFX)文件行102 C++
.dll!(双DFV,双DFH)文件线1450 C++
.dll!(双DFV,双DFH,INT号)文件线1672 C++
...

由于我对中心源文件和特定于项目的源文件之间的差异特别感兴趣,我希望在文件名中看到整个路径。

据我所知,没有这样的选项(在任何版本的Visual Studio中)。您唯一能做的就是右键单击调用堆栈并按go to source file。然后您将看到源代码,希望您知道它是文件的哪个版本。据我所知,也没有什么插件,你正在试图完成


您可以停止查看,该选项根本不可用

很难猜测为什么微软决定不提供它,但这是唯一一个模棱两可的调试信息。软件开发人员每天需要处理的事情,他们调试的程序通常是在构建服务器上根据不在相同目录中的源代码构建的

我想浏览自己的文件,而不需要打开所有包含的单个中心文件


这是不必要的,只需双击您感兴趣的堆栈跟踪中的特定条目。如果调试器知道源文件,那么它将自动打开并在语句中定位插入符号。将鼠标悬停在编辑器选项卡上会显示文件的路径。如果调试器找不到源文件,则您将获得一个对话框,以导航到正确的目录。

请理解:我不久前曾问过这个问题,但没有引起足够的注意,同时我已升级到较新版本的Visual Studio,但问题仍然存在。也许PDB不同步:@SimonMourier:我有一个设置,我的源代码必须与PDB完全匹配,所以PDB不可能不同步。这里的问题是,源文件名似乎出现在PDB中(如您提供的非常有趣的链接中所述),但未显示在Visual Studio的调用堆栈窗口中。您理解此设置的方式是错误的:这意味着如果给定的PDB不同步,则根本不会使用它,它不能保证所有的PDB都是同步的。当PDB不同步时,您通常没有到源文档的链接谢谢您的回复,但这不是我想要的:当我查看我的调用堆栈时,深度约为30-40个条目,是自己的文件和中心文件(“C:\Program files\…”)的混合体,我想浏览自己的文件,不需要打开所有包含的单个中心文件。哦,我明白了,但就我所知,仍然没有简单的方法来完成。