Вскочить в Python Интерактивная Сессия середина программы?

h1 и h2 являются нативными display: block элементами.

Сделайте их display: inline, чтобы они вели себя как обычный текст.

Вы также должны сбросить значения по умолчанию padding и margin, которые есть у элементов.

12
задан Jiaaro 5 June 2009 в 12:30
поделиться

5 ответов

Если вы уже работаете в режиме отладки, вы можете установить дополнительную точку останова, если выполнение программы в настоящее время приостановлено (например, потому что вы уже находитесь в точке останова). Я просто попробовал это сейчас с последней версией Pydev - все работает отлично.

Если вы работаете нормально (т.е. не в режиме отладки), все точки останова будут проигнорированы. Никакие изменения в точках останова не повлияют на работу неотладочного прогона.

-2
ответ дан 2 December 2019 в 19:32
поделиться

Я давно использую этот код в моем sitecustomize.py , чтобы запустить отладчик при возникновении исключения. Это также можно запустить, нажав Ctrl + C. Красиво работает в оболочке, про затмение не знаю.

import sys

def info(exception_type, value, tb):
   if hasattr(sys, 'ps1') or not sys.stderr.isatty() or not sys.stdin.isatty() or not sys.stdout.isatty() or type==SyntaxError:
      # we are in interactive mode or we don't have a tty-like
      # device, so we call the default hook
      sys.__excepthook__(exception_type, value, tb)
   else:
      import traceback
      import pdb


      if exception_type != KeyboardInterrupt:
          try:
              import growlnotify
              growlnotify.growlNotify("Script crashed", sticky = False)
          except ImportError:
              pass

      # we are NOT in interactive mode, print the exception...
      traceback.print_exception(exception_type, value, tb)
      print
      # ...then start the debugger in post-mortem mode.
      pdb.pm()

sys.excepthook = info

Вот источник и дополнительные обсуждения StackOverflow .

2
ответ дан 2 December 2019 в 19:32
поделиться

Это из старого проекта, и я не писал его, но он делает что-то похожее на то, что вы хотите, используя ipython.

'''Start an IPython shell (for debugging) with current environment.                    
Runs Call db() to start a shell, e.g.                                                  


def foo(bar):                                                                          
    for x in bar:                                                                      
        if baz(x):                                                                     
            import ipydb; ipydb.db() # <-- start IPython here, with current value of x (ipydb is the name of this module).
.                                                                                      
'''
import inspect,IPython

def db():
    '''Start IPython shell with callers environment.'''
    # find callers                                                                     
    __up_frame = inspect.currentframe().f_back
    eval('IPython.Shell.IPShellEmbed([])()', # Empty list arg is                       
         # ipythons argv later args to dict take precedence, so                        
         # f_globals() shadows globals().  Need globals() for IPython                  
         # module.                                                                     
         dict(globals().items() + __up_frame.f_globals.items()),
         __up_frame.f_locals)

редактирование Джима Роберта (ответственный за вопрос) : Если вы поместите приведенный выше код в файл с именем my_debug.py для этого примера. Затем поместите этот файл в свой путь к Python, и вы можете вставить следующие строки в любом месте своего кода, чтобы перейти в отладчик (если вы выполняете его из оболочки):

import my_debug
my_debug.db()
6
ответ дан 2 December 2019 в 19:32
поделиться

Вы можете перейти в интерактивный сеанс, используя code.InteractiveConsole , как описано здесь ; однако я не знаю, как вызвать это из Eclipse.

Решением может быть перехват Ctrl + C для перехода в эту интерактивную консоль (с использованием модуля signal : signal.signal ( signal.SIGINT, my_handler) ), но это, вероятно, изменит контекст выполнения, а вы, вероятно, этого не захотите.

2
ответ дан 2 December 2019 в 19:32
поделиться

Не совсем ответ на ваш вопрос, а просто указатель на iPython. На всякий случай, если вы этого не знаете. Я использую его бок о бок с eclipse / pydev именно для таких вещей.

Уместна эта информация о встраивании iPython в ваше собственное приложение. Это дает возможность делать то, что вы ищете, если вы хотите делать это за пределами eclipse / pydev.

1
ответ дан 2 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: