(please don't top-post - it is harder to follow the conversation)

On 6/17/2020 10:20 AM, Kunal Chauhan wrote:

On 17 Jun 2020 13:50, "Paul FLOYD" <pjfl...@wanadoo.fr <mailto:pjfl...@wanadoo.fr>> wrote:

    > Hi Team,

    > Q.As for a valgrind usage , is valgrind only checks the memory
    leakage of code which hits only?

    > Q As for a can valgrind checks the all the code of binary
    without hitting rhe scenerio. In code?

    Kunal

    Broadly speaking, there are two categories of software analysis tools.

    1. Static analysis tools. For instance, clang analyzer. See
    https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
    <https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis>


    These tools parse all the code to produce some sort of model and
    then do lots of 'what-if' analysis on all code paths.
    Advantages: does not depend on your test coverage, can check for
    very many kinds of errors.
    Disadvantages: tools have to make tradeoffs between runtime and
    really checking all possibilities. Also the models
    are usually limited in scope which can cause false positives.

    2. Dynamic analysis tools like Valgrind. Again wikipedia has a
    page listing tools
    https://en.wikipedia.org/wiki/Dynamic_program_analysis
    <https://en.wikipedia.org/wiki/Dynamic_program_analysis>

    These tools test running code.
    Advantages: lower rate of false positives.
    Disadvantage. Only as good as your tests - you should be measuring
    your code coverage! Performance - usually there is a large memory
    and/or runtime overhead, which can make running
    dynamic tools on large applications/data imprectical.

    A+
    Paul


    _______________________________________________
    Valgrind-users mailing list
    Valgrind-users@lists.sourceforge.net
    <mailto:Valgrind-users@lists.sourceforge.net>
    https://lists.sourceforge.net/lists/listinfo/valgrind-users
    <https://lists.sourceforge.net/lists/listinfo/valgrind-users>


Hi Team,

1. Is valgrind use particular format, to show memory leaks like double free in c code.

2. If we have multiple pointers and some sig abort happens in code, is valgrind works for that part also.?

Thnks
Kunal


1.  The memcheck tool within valgrind will report repeated calls to free():  https://www.valgrind.org/info/tools.html

2.  valgrind/memcheck will report the state of memory when the program exits, whatever the reason.  If the error handler in your code does not clean up all memory before the program exits, valgrind will generate a very long report of the memory still in use. Because abort() calls can occur anywhere in the code, many developers do not attempt to clean up everything - the code to do so can be very complex.

Item 2 sounds very limiting, but if your program is crashing because of one or more invalid memory accesses, valgrind will report where that occurred.  You can fix the access error(s), ignore the report of memory still in use, then rerun valgrind.  This is a very powerful debugging method.

--
    David Chapman      dcchap...@acm.org
    Chapman Consulting -- San Jose, CA
    EDA Software Developer, Expert Witness
    www.chapman-consulting-sj.com
    2018-2019 Chair, IEEE Consultants' Network of Silicon Valley

_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to