User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cl:variables:star-break-on-signals-star [2017/05/01 21:00] (current)
Line 1: Line 1:
 +====== Variable *BREAK-ON-SIGNALS* ======
 +
 +====Value Type====
 +a //​[[CL:​Glossary:​type specifier]]//​.
 +
 +====Initial Value====
 +**[[CL:​Constant Variables:​nil]]**.
 +
 +====Description====
 +When ''​([[CL:​Functions:​typep]] condition *break-on-signals*)''​ returns //​[[CL:​Glossary:​true]]//,​ calls to **[[CL:​Functions:​signal]]**,​ and to other //​[[CL:​Glossary:​operator|operators]]//​ such as **[[CL:​Functions:​error]]** that implicitly call **[[CL:​Functions:​signal]]**,​ enter the debugger prior to //​[[CL:​Glossary:​signal|signaling]]//​ the //​[[CL:​Glossary:​condition]]//​.
 +
 +The **[[CL:​Restarts:​continue]]** //​[[CL:​Glossary:​restart]]//​ can be used to continue with the normal //​[[CL:​Glossary:​signal|signaling]]//​ process when a break occurs process due to ***break-on-signals***.
 +
 +====Examples====
 +<​blockquote> ​
 +*break-on-signals* → [[CL:​Constant Variables:​nil|NIL]]
 +([[CL:​Macroc:​ignore-errors]] ([[CL:​Functions:​error]] '​[[CL:​Types:​simple-error]] :​format-control "​Fooey!"​))
 +<​r>​[[CL:​Constant Variables:​nil|NIL]]
 +#<​SIMPLE-ERROR 32207172></​r>​
 +
 +([[CL:​Special Operators:​let]] ((*break-on-signals* '​[[CL:​Types:​error]])) ​
 +  ([[CL:​Macroc:​ignore-errors]] ([[CL:​Functions:​error]] '​[[CL:​Types:​simple-error]] :​format-control "​Fooey!"​)))
 +<​e>​Break:​ Fooey!
 +BREAK entered because of *BREAK-ON-SIGNALS*.
 +To continue, type :CONTINUE followed by an option number:
 +1: Continue to signal.
 +2: Top level.
 +Debug> :continue 1
 +Continue to signal.</​e>​
 +<​r>​[[CL:​Constant Variables:​nil|NIL]],​ #<​SIMPLE-ERROR 32212257></​r>​
 +
 +([[CL:​Special Operators:​let]] ((*break-on-signals* '​[[CL:​Types:​error]])) ​
 +  ([[CL:​Functions:​error]] '​[[CL:​Types:​simple-error]] :​format-control "​Fooey!"​))
 +<​e>​Break:​ Fooey!
 +BREAK entered because of *BREAK-ON-SIGNALS*.
 +To continue, type :CONTINUE followed by an option number:
 +1: Continue to signal.
 +2: Top level.
 +Debug> :continue 1
 +Continue to signal.</​e>​
 +<​e>​Error:​ Fooey!
 +To continue, type :CONTINUE followed by an option number:
 +1: Top level.
 +Debug> :continue 1
 +Top level.</​e>​
 +</​blockquote>​
 +
 +====Affected By====
 +None.
 +
 +====See Also====
 +**[[CL:​Functions:​break|Function BREAK]]**, **[[CL:​Functions:​signal|Function SIGNAL]]**, **[[CL:​Functions:​warn|Function WARN]]**, **[[CL:​Functions:​error|Function ERROR]]**, **[[CL:​Functions:​typep|Function TYPEP]]**, {\secref\ConditionSystemConcepts}
 +
 +====Notes====
 +***break-on-signals*** is intended primarily for use in debugging code that does signaling. When setting ***break-on-signals***,​ the user is encouraged to choose the most restrictive specification that suffices. Setting ***break-on-signals*** effectively violates the modular handling of //​[[CL:​Glossary:​condition]]//​ signaling. In practice, the complete effect of setting ***break-on-signals*** might be unpredictable in some cases since the user might not be aware of the variety or number of calls to **[[CL:​Functions:​signal]]** that are used in code called only incidentally.
 +
 +***break-on-signals*** enables an early entry to the debugger but such an entry does not preclude an additional entry to the debugger in the case of operations such as **[[CL:​Functions:​error]]** and **[[CL:​Functions:​cerror]]**.
 +
 +\issue{FORMAT-STRING-ARGUMENTS:​SPECIFY} \issue{BREAK-ON-WARNINGS-OBSOLETE:​REMOVE}