标签: visual-studio-debugging

返回值复制问题(改善调试时间) - 这里有什么解决方案?

我最近遇到的最有趣的C++问题如下:

我们确定(通过分析)我们的算法在MS Visual Studio 2005中的调试模式中花费了大量时间,具有以下类型的函数:

MyClass f(void)
{
      MyClass retval;
      // some computation to populate retval

      return retval;
}
Run Code Online (Sandbox Code Playgroud)

正如你们大多数人可能知道的那样,这里的返回调用一个拷贝构造函数来传递一个副本,retval然后传递析构函数retval.(注意:原因释放模式非常快,因为返回值优化.但是,我们希望在调试时关闭它,以便我们可以介入并很好地查看调试器IDE中的内容.)

所以,我们的一个人提出了一个很酷的(如果有点缺陷)解决方案,这就是创建转换运算符:

MyClass::MyClass(MyClass *t)
{
      // construct "*this" by transferring the contents of *t to *this   
      // the code goes something like this
      this->m_dataPtr = t->m_dataPtr;  

      // then clear the pointer in *t so that its destruction still works
      // but becomes 'trivial'
      t->m_dataPtr = 0;
}
Run Code Online (Sandbox Code Playgroud)

并将上述功能更改为:

MyClass f(void)
{ …
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor visual-studio-debugging return-value-optimization

2
推荐指数
1
解决办法
564
查看次数

XMM寄存器值

我发现很难在Visual Studio的寄存器窗口中解释xmm寄存器的值.窗口显示以下内容:

XMM0 = 00000000000000004018000000000000 XMM1 = 00000000000000004020000000000000 
XMM2 = 00000000000000000000000000000000 XMM3 = 00000000000000000000000000000000 
XMM4 = 00000000000000000000000000000000 XMM5 = 00000000000000000000000000000000 
XMM6 = 00000000000000000000000000000000 XMM7 = 00000000000000000000000000000000 

XMM00 = +0.00000E+000      XMM01 = +2.37500E+000      XMM02 = +0.00000E+000      
XMM03 = +0.00000E+000      XMM10 = +0.00000E+000      XMM11 = +2.50000E+000      
XMM12 = +0.00000E+000      XMM13 = +0.00000E+000
Run Code Online (Sandbox Code Playgroud)

从我运行的代码中,XMM0和XMM1的值应该是6和8(或其他方式).此处显示的寄存器值为:XMM01 = +2.37500E+000

这转化为什么?

sse visual-studio-debugging

2
推荐指数
1
解决办法
3107
查看次数

OCCI C++应用程序的Visual Studio调试运行时错误

我正在使用Visual Studio开发一个使用OCCI查询Oracle 11g数据库的C++程序.这是一个非常简单的程序,只进行一次查询,但我一直遇到运行时错误.我首先尝试在VS2010中开发这个,下载11.2.0.3 OCCI文件,并且我得到了一个错误,该错误与不在oci.dll中的heap-alloc过程的入口点有关.我得到的印象是这个错误可能是因为我的Oracle客户端是11.2.0.1.

由于我无法出于支持原因将我的客户端升级到更高版本,因此我决定回退使用Visual Studio 2005,因为我在Oracle的OCCI文档中读到了已经在11g中安装了vc8版本的OCCI库和DLL客户.所以我将我的C++/OCCI程序移到了VS 2005,现在我得到了一个不同的调试运行时错误:一个错误消息框说"应用程序无法正确初始化",并且来自VS Output窗口中的加载器的消息说"ldrpWalkImportDescriptor" ()无法探测[ORACLE CLIENT DIR]\oci\lib\msvc\vc8\oraocci11d.dll的清单,ntstatus 0xc0150002"我没有看到oraocci11d.dll的清单文件,所以我很茫然如何解决这个问题.任何更精通OCCI的VS设置的人都可以提出建议吗?提前致谢...

谢尔顿

c++ runtime-error visual-studio-debugging oracle11gr2 occi

2
推荐指数
1
解决办法
2391
查看次数

在EnvDTE中调试时捕获VS局部变量

是否有可能捕获的二手当地人和调试窗口中的调试数据,使用EnvDTE的.vsix的Visual Studio扩展?或者通过另一种方法可以吗?

我想创建一个自定义的Locals窗口,我们可以修改它以显示我们喜欢的一些更重的内容,而不会牺牲高级用户的原始Locals窗口.理想的解决方案是获取发送到本地窗口的数据,这样我就可以构建自己的树.

c# visual-studio-2010 envdte visual-studio-debugging visual-studio-extensions

2
推荐指数
1
解决办法
1137
查看次数

为什么Visual Studio在调试时会询问cs文件?

我在我的项目中包含了一个dll文件.我从库文件夹中引用它,其中也存在dll的pdb文件.当我编译时,我看到dll和pdb都复制到主项目的bin文件夹中.在小项目上,这非常有效,我可以毫无问题地调试到dll.但是,有时候,在较大的项目中,VS会不断询问特定的cs文件,即使它们的pdb文件包含在项目bin文件夹中.如果我能找到那些cs文件就没问题,但这很烦人.

为什么Visual Studio有时会询问cs文件,有时候不会?

visual-studio visual-studio-debugging pdb-files

2
推荐指数
1
解决办法
1399
查看次数

调试ASP MVC项目时,VS2012 Debugger不会打开浏览器

我试图在Visual Studio 2012中调试ASP MVC 4项目.但是,一旦代码编译调试器完全停止,从不打开浏览器.我可以从这台计算机上运行ASP.Net项目,但是这个项目似乎不想工作.有了这个项目,如果我点击通知区域中的IIS Express,它显示我的网站,如果我点击它,然后它在浏览器上打开我的网站,但默认情况下使用Visual Studio调试它不会打开.

我也尝试设置我的启动项目,但这也不起作用????

debugging asp.net-mvc visual-studio-debugging visual-studio-2012

2
推荐指数
1
解决办法
1859
查看次数

正在移动的断点Visual Studio 2010

我在调试C#/ .Net程序时使用断点.我经常使用许多"When hit"断点来在Output窗口中显示消息并继续,所以我可以检查程序在执行时正在做什么.

但我经常发现,在编辑代码后,我的断点会被移动,产生虚假或不正确的结果,我必须去删除旧的断点并制作新的断点.

在Stack Overflow上搜索这个我发现其他程序员在Release模式下构建时遇到此问题,但我正在使用Debug配置构建.

如何让我的断点保持不变?

c# visual-studio-2010 visual-studio visual-studio-debugging

2
推荐指数
1
解决办法
228
查看次数

为什么在VisualStudio 2010中未达到断点?

    static void Main(string[] args)
    {
        List<int> li = new List<int>() { 1, 20, 30, 4, 5 };
        GetNosLessThan5(li);
    }

    public static IEnumerable<int> GetNosLessThan5(List<int> numbers)
    {
        foreach (var v in numbers)
        {
            if (v < 5)
                yield return v;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在void main的开头放了一个调试点.当我连续按f11时,黄色箭头仅覆盖主功能块,调试终止.它根本没有达到"getnoslessthan5"的功能.融合.!

c# visual-studio-2010 visual-studio-debugging

2
推荐指数
1
解决办法
107
查看次数

Visual Studio 2012不会让我调试Interface的实现

我在LINQ中经历了一些查询并希望了解它的实现,所以我想调试相同,但是当我尝试这样做时,Visual Studio没有进入接口的实现,不知道为什么会这样.我正在使用Visual Studio Community 2015.这是我的代码

class Client
    {
        static void Main(string[] args)
        {
            string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" };
            var result = words.OrderBy(a => a, new CaseInsensitiveComparer());
            Console.Read();
        }
    }
    public class CaseInsensitiveComparer : IComparer<string>
    {
        public int Compare(string x, string y)
        {
            Console.WriteLine("x is " + x + " & y is " + y+" the value is "+ string.Compare(x, y, StringComparison.OrdinalIgnoreCase));
            return string.Compare(x, y, StringComparison.OrdinalIgnoreCase);
        }
    }
Run Code Online (Sandbox Code Playgroud)

最可悲的部分是我也无法在控制台窗口中打印任何内容

Console.WriteLine("x是"+ x +"&y是"+ y +",值是"+ …

c# visual-studio visual-studio-debugging

2
推荐指数
1
解决办法
231
查看次数

C#Visual Studio服务调试“目前不会命中断点。没有为该文档加载任何符号”

Visual Studio和C#的新手。在Visual Studio 2017中构建一个名为Transactional Messaging的C#Windows服务,该服务依赖于一个名为Outbound Messaging的项目。当我开始调试并尝试在出站邮件文件上添加断点时,我得到

“此断点当前不会被命中。没有为该文档加载任何符号”

据我所知,VS仅无法为以下文件加载pdb文件:log4net.dll,Castle.Windsor.dll和Castle.Core.dll。我没有在事务消息服务中向文件添加断点的问题。我还无法识别行为模式或永久修复程序,因此此时错误似乎是随机的。一分钟后,我认为我已经找到了修复程序,当我尝试在当天晚些时候针对同一错误使用该修复程序时,我没有运气。我怀疑最近的一次停电意外关闭了我的计算机,因为它看起来可以缓存pdb文件,但是被告知这是一个长期的尝试。

我按照以下步骤调试服务:

  1. 通过Windows服务小程序停止事务消息服务
  2. 通过installutil /u TransactionalMessaging.exeDebug文件夹中的VS命令行卸载Transactional Messaging Service
  3. Visual Studio中的干净事务消息解决方案
  4. 在Visual Studio中构建事务消息解决方案(有一个解决方法是在解决方案资源管理器中右键单击解决方案的各个方面,然后分别构建)
  5. 使用installutil TransactionalMessaging.exeDebug文件夹中的VS命令行安装Transactional Messaging Service
  6. 通过Windows服务小程序启动事务消息服务
  7. 在VS中,“调试”>“附加到进程”>“事务性消息传递”
  8. 尝试在出站消息服务中的文件中添加断点,这将使我收到上述错误。

我尝试解决此错误的步骤:

  1. 调试>视窗>模块手动加载每个模块的符号(pdb文件为log4net.dll,Castle.Windsor.dll和Castle.Core.dll无法找到) 的模块的图像
  2. 在上面的步骤2和3之间完全删除bin和obj文件夹
  3. 项目>项目属性>构建>高级>调试信息:完整(对于事务性消息传递和出站消息传递)

我不确定这是否缺乏对VS,C#或代码库的理解。感谢您提供任何见解,我已经过了谷歌搜索阶段,并发布了一个新的问题作为不得已的选择。

c# windows-services visual-studio visual-studio-debugging pdb-files

2
推荐指数
1
解决办法
3906
查看次数