ios - How to set the condition of conditional breakpoints in Swift with self and enum? -
i have enum of http methods:
enum httpmethod: string { case = "get" case post = "post" }
and have request class , request wrapper class:
class request { let method: httpmethod = .get } class requestwrapper { let request: request func comparetorequest(incomingrequest: nsurlrequest) -> bool { // next line conditional breakpoint set. return request.method.rawvalue == incomingrequest.httpmethod } }
i set conditional breakpoint on line:
return request.method.rawvalue == incomingrequest.httpmethod
with condition:
self.request.method == httpmethod.post
and debugger stop @ line error message:
stopped due error evaluating condition of breakpoint 1.1: "self.request.method == httpmethod.post" couldn't parse conditional expression: <expr>:1:1: error: use of unresolved identifier 'self' self.request.httpmethod == httpmethod.post
and if delete self
, change condition to:
request.method == httpmethod.post
error message following lines:
stopped due error evaluating condition of breakpoint 1.1: "request.method == httpmethod.post" couldn't parse conditional expression: <expr>:1:1: error: not find member 'method' request.method == httpmethod.post ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
is there way solve question?
update:
it's able check value of self.request.method
using lldb command:
fr v self.request.method
and if use local constant store value, debugger can stopped @ right position:
// use local constant store http method let method = request.method // condition of breakpoint method == httpmethod.post
update 2:
i using xcode 6.3.1
this pretty lldb bug. don't mention version of tools using. if aren't using 6.3.1 or better, please try again using that. if still seeing problem, please file bug http://bugreporter.apple.com.
note, frame var
, expr
pretty different beasts. frame var
prints values of local variables, using dwarf debug information directly, not expression evaluator. instance, doesn't know enough ==
. imagine if did:
(lldb) self.request.method == httpmethod.post
when stopped @ breakpoint see same effect.
the expression parser has play trick of posing method of class (to transparent references through self, etc work) and, little tricky right. apparently aren't doing job correctly in case.
Comments
Post a Comment