当前位置:  开发笔记 > 编程语言 > 正文

如何在Visual C++中添加条件断点

如何解决《如何在VisualC++中添加条件断点》经验,为你挑选了2个好方法。

我想在VC++ Express 2005中为我的代码添加断点条件,以便断点仅在局部变量满足指定条件时触发.例如

bool my_test(UIDList test_list) {
    foo(test_list);
    bar(test_list); // I have a breakpoint here, but only want it to trigger if test_list.Length() > 0
    print(test_list);
}

右键单击我的断点并选择"条件..."我找到了一个看似按我想要的对话框,但是我尝试在文本字段中输入的任何内容都会导致以下错误:

无法评估断点条件:CX0052:错误:成员函数不存在

我尝试了帮助文档,但我找不到答案.我希望有VC++经验的人能够指出我正确的方向......

我之前尝试升级到VC++ Express的更新版本,但项目没有干净地导入.由于项目的复杂性和我目前的时间尺度,我不能在此时考虑升级为解决方案.



1> Ofek Shilon..:

VS确实有一些微评估引擎 - 在可变观察窗口,即时窗口,断点条件等等.我永远找不到合适的文档.据我所知,他们对于他们愿意打电话的方法很挑剔,他们对访问限制也不敏感.
所以,你可以改写你的病情

test_list.Length() > 0  

喜欢的东西

test_list.m_nLength > 0

(或者你的私人长度var).

(编辑)刚刚找到这个msdn页面,解释调试器可以和不能处理的表达式.首先,确实 -

'无论访问控制如何,调试器都可以访问所有类成员.您可以检查任何类对象成员,包括基类和嵌入式成员对象.

第二,我猜测未能评估'长度()' - 它可能是内联的:

'调试器表达式不能调用内部函数或内联函数,除非函数至少出现一次作为普通函数.



2> Stormenet..:

使用DebugBreak(); 功能:

bool my_test(UIDList test_list) {
    foo(test_list);
    if (bar(test_list) /* or whatever check :) */) // I have a breakpoint here, but only want it to trigger if test_list.Length() > 0
        DebugBreak();
    }
    print(test_list);
}

或者你总是可以使用assert(表达式)

bool my_test(UIDList test_list) {
    foo(test_list);
    bar(test_list);
    assert(test_list.Length() > 0); // will break here
    print(test_list);
}

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有