Почему valgrind ничего не выводит на мой тестовый скрипт - PullRequest
0 голосов
/ 09 июля 2019

Я не вижу вывод valgrind

Я использовал valgrind, чтобы обнаружить утечку памяти в другой большой программе, поэтому я выяснил, где она была (по крайней мере, я так думал), но когда яиспользуется valgrind, он ничего не выводит, даже HEAD SUMMARY.

Я хочу иметь возможность запустить программу и увидеть сообщение журнала, которое обычно дает valgrind

#!/usr/bin/env python2
import logging, time
import yang as ly
import libsysrepoPython2 as sysrepo

if __name__ == "__main__":
    app_name = "unknown"
    active_datastore = "running"
    connection = None
    session = None
    lock_file = "/tmp/sysrepo_lock"
    yang_folder = "/etc/sysrepo/yang"
    data_folder = "/etc/sysrepo/data"
    module_name = "ucpe"
    ctx = None
    priority = 0

    root = None
    data_list = None
    xpath="/ucpe:config/interfaces:interface[name='nat0']/port-forwarding-all"
    configured = False
    testNum = 0


    for i in range(0,100):
        try:
            #This is just for initial configuration
            if not configured:
                configured = True
                if not connection:
                    connection = sysrepo.Connection(app_name, sysrepo.SR_CONN_DAEMON_REQUIRED)
                if not session:
                    session = sysrepo.Session(connection)

                schemas = session.list_schemas()
                schema_list = []
                for n in range(0, schemas.schema_cnt()):
                    selected_schema = schemas.schema(n)
                    if str(selected_schema.module_name()).find("sysrepo-") > -1:
                        continue
                    schema_dict = dict()
                    schema_dict['module_name'] = selected_schema.module_name()
                    schema_dict['ns'] = selected_schema.ns()
                    schema_dict['prefix'] = selected_schema.prefix()
                    schema_dict['implemented'] = selected_schema.implemented()
                    schema_dict['revision'] = selected_schema.revision().revision()
                    schema_dict['file'] = selected_schema.revision().file_path_yang()
                    schema_list.append(schema_dict)

                ctx = ly.Context(yang_folder)

                for schema in schema_list:
                    ctx.load_module(schema['module_name'], None)

                root = ctx.parse_data_path("{}/{}.{}".format(data_folder, module_name, active_datastore),
                                        ly.LYD_XML, ly.LYD_OPT_CONFIG)

            for x in range(0,100000):
                data_list = root.child().find_path(xpath).data() # This line here
            #from pudb import set_trace; set_trace()

            for elem in data_list:
                schema = elem.schema()
                if ly.LYS_LEAF == schema.nodetype():
                    casted = elem.subtype()
                    if casted is None:
                        continue
                else:
                    break
            if casted is not None:
                print("Success. Finished: " + casted.value_str())
            else:
                raise Exception(ex)
            testNum += 1

        except Exception as ex:
            time.sleep(.400)
            print("Error! at test{}, {}".format(testNum, ex))

        print("Wait before next test! Test number " + str(testNum) + " finished!")
        time.sleep(5)

Я ожидал увидеть полныйЖурнал с выделениями и освобождением памяти и в конце КРАТКИЙ ОБЗОР.Если я оставляю сценарий достаточно долго, он съедает всю память, но в итоге ничего не печатается.Используя команду с добавленными опциями:

valgrind --log-file=/home/valgrind.log --leak-check=yes --track-origins=yes /home/tinyTest_parse_data_path.py 
I get the output:
==32672== Memcheck, a memory error detector
==32672== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==32672== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==32672== Command: /home/tinyTest_parse_data_path.py
==32672== Parent PID: 16530
==32672==
~ 

Что может быть причиной всего этого

...