Найти - Пользователи
Полная версия: как получить больше отладочной информации [решено]
Начало » Python для новичков » как получить больше отладочной информации [решено]
1
AD0DE412
фрамеворк 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

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


AD0DE412
спсб
зы в общем как то так
 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
    '''
ззы блин пример из доки по стандартной библиотеке … пойду стыдиться
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB