2014-02-12 2 views
1

내가 SBCL (나의 마음에 드는 구현)를 사용하고 때 나는 종종 REPL라는 메시지가 말을 의미 가정SBCL 오류 메시지

CL-USER> (vgplot:fred) ; Evaluation aborted on 
#<SB-INT:SIMPLE-READER-PACKAGE-ERROR "Symbol ~S not found in the ~A package." {1004289123}>. CL-USER> 

에 오류 메시지가 이런 종류의 참조는 "기호 FRED는 VGPLOT에서 찾을 수 없습니다 꾸러미."

나는 SBCL을 구축하는 데 뭔가 잘못을했다고 상상한다. (정확히 무엇을 발견 할 수는 없지만) 궁금한 점이있다.

+0

SLIME을 사용하고 있습니까? 먼저 디버거에 들어가거나 "평가가 중단되었습니다"비트를 바로 인쇄합니까? – Xach

+1

그게 오류 개체의 (읽을 수없는) 인쇄 표현 것 같습니다. 문자열에는 완전한 오류 메시지가 없지만 시스템에 오류를 사용자에게 표시하는 데 도움이되는 형식 문자열입니다. 디버거가 적절하면 의도 한대로 메시지를보아야합니다. – gsg

+0

예, 슬라임 사용 및 슬라임 오류가 제대로 나타납니다. 그러나 이것이 repl 버퍼에 나타나는 것은 귀찮은 일입니다. 정확하게 일어난 일에 대한 기록을 얻지 못하기 때문입니다. 나는 이것이 읽을 수없는 대상이라는 것을 분명히 이해할 수 있지만 왜 이렇게 인쇄됩니까? 점액질 상호 작용은 어쩌면? tks –

답변

0

이 작업을 수행 할 수 있습니다 :

(defmethod print-object :around ((condition simple-condition) stream) 
    (print-unreadable-object (condition stream) 
    (apply #'format stream (simple-condition-format-control condition) 
          (simple-condition-format-arguments condition)) 
    (terpri stream) 
    (call-next-method))) 

이가 인쇄 된 형태로 모든 simple-condition의 (이 중 sb-int:simple-reader-error이 하나)의 형식에 대한 설명을 추가합니다. 나는 이것을 "좋은 생각"이라고 생각하지 않으며 의도하지 않은 결과를 초래할 수도 있습니다.

더 나은 해결책은이 정보 자체를 인쇄하기 위해 슬라임/스웽크를 수정하는 것이지만 어떻게해야 할지를 알 수 없습니다.

+0

사실, 이것은 아마도 갈 길입니다. Xach 역시 옳습니다. 살인자가 아니라 사소한 성가심입니다.하지만이 대답을 받아 들일 것입니다. 도와 주셔서 감사합니다. –