Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to create conditional breakpoint with std::string

Suppose I have this function:

std::string Func1(std::string myString) {    //do some string processing     std::string newString = Func2(myString)    return newString;   } 

how do I set a conditional break when newString has a specific value ? (without changing the source)

setting a condition newString == "my value"

didn't work the breakpoints got disabled with an error "overloaded operator not found"

like image 588
Eli Avatar asked Nov 16 '09 08:11

Eli


People also ask

How do you set conditional breakpoints?

To set a conditional breakpoint, activate the context menu in the source pane, on the line where you want the breakpoint, and select “Add Conditional Breakpoint”. You'll then see a textbox where you can enter the expression. Press Return to finish.

What is a conditional breakpoint?

Conditional breakpoints allow you to break inside a code block when a defined expression evaluates to true. Conditional breakpoints highlight as orange instead of blue. Add a conditional breakpoint by right clicking a line number, selecting Add Conditional Breakpoint , and entering an expression.

How do I apply conditional breakpoints in eclipse?

To create a conditional breakpoint, first set a breakpoint on a line (Ctrl+Shift+B), right-click on the breakpoint and select Breakpoint Properties. Then configure a condition that returns a boolean. Eclipse only stops if the conditions returns true.


2 Answers

There is a much easier way in Visual Studio 2010/2012.

To accomplish what you are looking for in ANSI use this:

strcmp(newString._Bx._Ptr,"my value")==0  

And in unicode (if newString were unicode) use this:

wcscmp(newString._Bx._Ptr, L"my value")==0  

There are more things you can do than just a compare, you can read more about it here:

http://blogs.msdn.com/b/habibh/archive/2009/07/07/new-visual-studio-debugger-2010-feature-for-c-c-developers-using-string-functions-in-conditional-breakpoints.aspx

like image 185
OBWANDO Avatar answered Sep 29 '22 00:09

OBWANDO


Some searching has failed to turn up any way to do this. Suggested alternatives are to put the test in your code and add a standard breakpoint:

if (myStr == "xyz") {     // Set breakpoint here } 

Or to build up your test from individual character comparisons. Even looking at individual characters in the string is a bit dicey; in Visual Studio 2005 I had to dig down into the member variables like

myStr._Bx._Buf[0] == 'x' && myStr._Bx._Buf[1] == 'y' && myStr._Bx._Buf[2] == 'z' 

Neither of these approaches is very satisfactory. We should have better access to a ubiquitous feature of the Standard Library.

like image 36
Brad Payne Avatar answered Sep 29 '22 00:09

Brad Payne