Не удается достичь точек останова для пользовательских действий при отладке кода Jython с помощью PyDev в Eclipse - PullRequest
3 голосов
/ 08 октября 2010

Я реализую приложение с графическим интерфейсом на Jython, используя Eclipse и плагин PyDev. Проблема в том, что мне трудно использовать встроенный отладчик. Когда я начинаю сеанс отладки, он просто останавливается. Конечно, этого следует ожидать, так как программа просто создает JFrame, а затем она заканчивается.

Так что любые контрольные точки, которые я ставлю для разных событий, например. нажатие кнопки никогда не произойдет, поскольку сеанс отладки уже завершен.

Что мне делать? Я устал от использования отпечатков для всей моей отладки.

Например, когда я попытался отладить этот небольшой пример Java. У меня нет проблем, чтобы ударить точка останова, которую я установил в windowClosing-методе

import java.awt.event.*;
import javax.swing.*;
public class Test1 {

public static void main(String s[]) {
    JFrame frame = new JFrame("JFrame Source Demo");
    // Add a window listner for close button
    frame.addWindowListener(new WindowAdapter() {

        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
    frame.setVisible(true);
}
}

А потом я попробовал этот более или менее похожий пример в jython

from javax.swing import JFrame;
import java.awt.event.WindowListener as WindowListener

class Test1 (JFrame, WindowListener):
    def __init__(self):
        super(JFrame, self).__init__('Some name goes here', defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size = (800, 800))
        self.addWindowListener(self)        
        self.setVisible(True)

    def windowClosing(self, windowEvent):
        print 'window closing'
        pass # want to hit this breakpoint

someFrame = Test1()
pass #breakpoint here maybe

Если я попытался запустить пример jython в отладчике, и он просто завершился. Хорошо, тогда я добавил точку останова после того, как создал someFrame и точку останова в методе windowClosing. Все еще не повезло, это не ударил, когда я закрываю окно, но я вижу его выполненным, как я вижу распечатку.

Может кто-нибудь сказать мне, что я делаю не так? Я уверен, что забыл что-то очень простое.

Ответы [ 2 ]

2 голосов
/ 08 октября 2010

Поместите точку останова в первую строку вашего основного метода, который запускает приложение.

Если вы хотите отладить определенные действия, такие как нажатие кнопки, добавьте слушатель действия к кнопке, а в методе обработки добавьте точку останова. Например:

JButton button = new JButton("OK");
button.addActionListener(new ActionListener()
 {
  @Override
  public void action(ActionEvent e)
  {
   System.out.println("button OK has been pressed"; // add breakpoint here
   // call to some code that handles the event
  }
});
1 голос
/ 20 февраля 2012

У меня была такая же проблема

btnCompilar = new JButton("Compilar");
btnCompilar.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
         compile(); //can't hit breakpoint here
    }
});

Мне не удалось достичь точек останова внутри actionPerformed, поэтому я просто создал метод и использовал в нем точки останова.

void compile(){  
    //can hit breakpoint here
}
...