Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 3, 2020 11:19:39

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

как получить больше отладочной информации [решено]

фрамеворк Kivy
проблема:
приложение на смартфоне при загрузке (из pickle файла) большого количества элементов (больше 4) приложение вываливается
тогда как на десктопе все работает

код для сохранения и загрузки элементов

     def save_sssn(self): 
        '''
        сохранение sssn
        '''
        data_save = {}
        try:
            for i in self.ids.grd.children:
                data_save.update(
                    {i.ids.num_btn.text: [i.example,
                                 i.value_example_msg]})
                cfg = i.cfg_msg
            
            data_save.update({'rule': self.rule,
                              'the_day': self.the_day})
            with open(cfg, 'r') as f:
                f_read = f.read()
            data_save.update({'cfg': f_read})
    
            with open('~/test.sssn', 'wb') as f:
                pickle.dump(data_save, f)
        except Exception as e:
            self.my_err = e
    def load_sssn(self):
        '''
        загрузка sssn
        '''
        try:
            with open('~/test.sssn', "rb") as f:
                sssn = pickle.load(f)
            self.ids.grd.clear_widgets()
            self.t_btn_turn = []
    
            def mk_btn():
                self.btn = VButton()
                self.btn.ids.num_btn.bind(
                    on_press=self.on_release_num_btn)
                self.btn.ids.time_btn.bind(
                    on_release=self.on_release_decor_time_btn)
                self.btn.ids.msg_btn.bind(
                    on_release=self.on_release_decor_text_btn)
                return self.btn
    
            for i in range(len(sssn) - 3):
                self.ids.grd.add_widget(mk_btn())
                self.ids.grd.size_hint_y = 1.01
                self.grd_resize()
                self.re_num_t_btn()
                self.recount_add_mode()
    
            for i in self.ids.grd.children:
                num = i.ids.num_btn.text
                i.example = sssn[num][0]
                i.value_example_msg = sssn[num][1]
                i.update_time_label()
                i.update_msg_label()
        except Exception as e:
            self.my_err = e

нужно:
как отловить что где происходит

использую такой код для main.py (это файл для запуска на … эээ … целевой платформе … )

 from kivy.lang import Builder
from kivy.app import App
import screenCommander
import traceback
xxx = screenCommander.ScreenCommander
if __name__ == '__main__':
    class TestApp(App):
        def build(self):
            return xxx()
    fl = open('/sdcard/test.log', 'w')
    try:
        TestApp().run()
    except Exception as e:
        a = f"--->\n' {str(traceback.print_exc())}'\n'{str(e)}"
        print(a, file=fl, flush=True)

сответственнно пишет в test.log
 --->
' None'
'weakly-referenced object no longer exists

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




1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июнь 3, 2020 15:00:19)

Офлайн

#2 Июнь 3, 2020 12:02:10

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как получить больше отладочной информации [решено]

Офлайн

#3 Июнь 3, 2020 12:04:10

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

как получить больше отладочной информации [решено]

спсб
зы в общем как то так

 from kivy.app import App
import screenCommander
xxx = screenCommander.ScreenCommander
if __name__ == '__main__':
    class TestApp(App):
        def build(self):
            return xxx()
    ## вариант 1
    #'''
    import traceback, sys 
    fl = open('~/logging_1.txt', 'w')
    try:
        TestApp().run()
    except Exception as e:
        exc_type, exc_value, exc_traceback = sys.exc_info()
        traceback_in_var = traceback.format_tb(exc_traceback)
        a = f"--->\n{str(traceback_in_var)}\n--->\n{str(e)}"
        fl.write(a)
        fl.close()
    #'''
    ## вариант 2 
    ## почему то не работает
    '''
    import logging
    LOG_FILENAME = '~/logging_2.txt'
    logging.basicConfig(
        filename=LOG_FILENAME, filemode='w', level=logging.DEBUG)
    logging.debug('This message should go to the log file')
    try:
        TestApp().run()
    except:
        logging.exception('Got exception on main handler')
        raise
    '''
ззы блин пример из доки по стандартной библиотеке … пойду стыдиться



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июнь 3, 2020 15:40:56)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version