मुझे लगता है कि मैं शायद सिर्फ एक छोटे से अधिक खुदाई के साथ समय में अपने ही सवाल का जवाब दे सकता था, लेकिन पहले gdb समाधान नहीं बल्कि पुराने सीखने के मोर्चे पर मुझे से बाहर ले लिया। मैं बरामद, तो ..
सी एच बी सी एस मेजर
के बाद स्क्रॉल हम पहचान कर सकते हैं का एक सा 'comint: भेजें इनपुट' फ़ंक्शन कुंजी 'दर्ज' करने के लिए बाध्य है। इस फ़ंक्शन के स्रोत को देखकर, comint.el: 1765 'रन-हुक-विद-एर्ग' के लिए एक कॉल है .. यह वह जगह है जहां हम महसूस करते हैं कि हम जो भी चाहते हैं उसे करने के लिए कहीं भी 'पीडीबी' नहीं है।
गड़ बाहरी डीबगिंग प्रक्रियाओं को कॉल करने और परिणामों को वापस करने के लिए एक सामान्य रैपर है .. फिर नियंत्रण नियंत्रण में नहीं है। यह जीडीबी के साथ समान था, लेकिन बाहरी कॉल के आस-पास एक अच्छा (पूर्व-मौजूदा) रैपर था जिसने सलाह दी कि कार्य 'साफ' महसूस करें।
तो हैक .. बस 'comint-send-input' के ऊपर 'comint-add-to-input-history' है। मृत आसान है।
;;save command history
(defadvice comint-add-to-input-history (before pdb-save-history activate compile)
"write input ring on exit"
(message "%s" cmd)
(if (string-match "^e\\(x\\|xi\\|xit\\)?$" cmd)
(progn (comint-write-input-ring)
(message "history file '%s' written" comint-input-ring-file-name)))
)
FYI करें, मैं इतिहास फ़ाइल पर लिखने में डिबगिंग सत्र
;#debugger history
(defun debug-history-ring (file)
(comint-read-input-ring t)
(setq comint-input-ring-file-name file)
(setq comint-input-ring-size 1000)
(setq comint-input-ignoredups t))
(let ((hooks '((gdb-mode-hook . (lambda() (debug-history-ring "~/.gdbhist")))
(pdb-mode-hook . (lambda() (debug-history-ring "~/.pythonhist"))))))
(dolist (hook hooks) (print (cdr hook)) (add-hook (car hook) (cdr hook))))
..और के लिए इनपुट अंगूठी आरंभ करने के लिए इन अगर डिबगिंग बफर मार दिया जाता है
(add-hook 'kill-buffer-hook 'comint-write-input-ring)
खुश होती है।
नोट: 'gdb-send-item' को वहां (23.3) और अब (24.3) के बीच कहीं भी emacs से हटा दिया गया था, लेकिन नीचे दिए गए उत्तर में सलाह के साथ उपर्युक्त स्ट्रिंग-मिलान को विलय कर रहा है, मेरे emacs gud/gdb और बाहरी जीडीबी इतिहास फिर से समन्वयित – elbeardmorez