VizTracer is a low-overhead logging/debugging/profiling tool that can trace and visualize your python code execution.

Overview

VizTracer

build flake8 readthedocs coverage pypi support-version license commit twitter

VizTracer is a low-overhead logging/debugging/profiling tool that can trace and visualize your python code execution.

The front-end UI is powered by Perfetto. Use "AWSD" to zoom/navigate. More help can be found in "Support - Controls".

example_img

Highlights

  • Detailed function entry/exit information on timeline with source code
  • Super easy to use, no source code change for most features, no package dependency
  • Supports threading, multiprocessing, subprocess and async
  • Logs arbitrary function/variable using RegEx without code change
  • Powerful front-end, able to render GB-level trace smoothly
  • Works on Linux/MacOS/Windows

Install

The prefered way to install VizTracer is via pip

pip install viztracer

Basic Usage

Command Line

Assume you have a python script to run:

python3 my_script.py arg1 arg2

You can simply use VizTracer by

viztracer my_script.py arg1 arg2
A result.json file will be generated, which you can open with vizviewer

vizviewer will host an HTTP server on http://localhost:9001. You can also open your browser and use that address.

If you do not want vizviewer to open the webbrowser automatically, you can use

vizviewer --server_only result.json

If you just need to bring up the trace report once, and do not want the persistent server, use

vizviewer --once result.json
vizviewer result.json
You can also generate standalone html file
viztracer -o result.html my_script.py arg1 arg2

The standalone HTML file is powered by catapult trace viewer which is an old tool Google made and is being replaced by Perfetto gradually.

Catapult trace viewer is sluggish with larger traces and is not actively maintained. It is recommended to use Perfetto instead.

However, if you really need a standalone HTML file, this is the only option. Perfetto does not support standalone files.

You can use vizviewer to open the html file as well, just to make the interface consistent

vizviewer result.html
Or add --open to open the reports right after tracing
viztracer --open my_scripy.py arg1 arg2
viztracer -o result.html --open my_script.py arg1 arg2
modules and console scripts(like flask) are supported as well
viztracer -m your_module
viztracer flask run

Inline

You can also manually start/stop VizTracer in your script as well.

from viztracer import VizTracer

tracer = VizTracer()
tracer.start()
# Something happens here
tracer.stop()
tracer.save() # also takes output_file as an optional argument

Or, you can do it with with statement

with VizTracer(output_file="optional.json") as tracer:
    # Something happens here

Jupyter

If you are using Jupyter, you can use viztracer cell magics.

# You need to load the extension first
%load_ext viztracer
%%viztracer
# Your code after

A VizTracer Report button will appear after the cell and you can click it to view the results

Advanced Usage

Trace Filter

VizTracer can filter out the data you don't want to reduce overhead and keep info of a longer time period before you dump the log.

Extra Logs without Code Change

VizTracer can log extra information without changing your source code

Add Custom Event

VizTracer supports inserting custom events while the program is running. This works like a print debug, but you can know when this print happens while looking at trace data.

Misc

Multi Thread Support

VizTracer supports python native threading module without the need to do any modification to your code. Just start VizTracer before you create threads and it will just work.

example_img

Multi Process Support

VizTracer supports subprocess, multiprocessing and os.fork() out of the box.

For more general multi-process cases, VizTracer can support with some extra steps.

example_img

Refer to multi process docs for details

Async Support

VizTracer supports asyncio natively, but could enhance the report by using --log_async.

example_img

Refer to async docs for details

Flamegraph

VizTracer can show flamegraph of traced data.

vizviewer --flamegraph result.json

example_img

Remote attach

VizTracer supports remote attach to a process as long as you installed VizTracer on that process.

Refer to remote attach docs

JSON alternative

VizTracer needs to dump the internal data to json format. It is recommended for the users to install orjson, which is much faster than the builtin json library. VizTracer will try to import orjson and fall back to the builtin json library if orjson does not exist.

Virtual Debug

You can virtually debug your program with you saved json report. The interface is very similar to pdb. Even better, you can go back in time because VizTracer has all the info recorded for you.

vdb 
   

   

Refer to the docs for detailed commands

Performance

VizTracer will introduce 2x to 3x overhead in the worst case. The overhead is much better if there are less function calls or if filters are applied correctly.

An example run for test_performance with Python 3.8 / Ubuntu 18.04.4 on Github VM
fib:
0.000678067(1.00)[origin]
0.019880272(29.32)[py] 0.011103901(16.38)[parse] 0.021165599(31.21)[json]
0.001344933(1.98)[c] 0.008181911(12.07)[parse] 0.015789866(23.29)[json]
0.001472846(2.17)[cProfile]

hanoi     (6148, 4100):
0.000550255(1.00)[origin]
0.016343521(29.70)[py] 0.007299123(13.26)[parse] 0.016779364(30.49)[json]
0.001062505(1.93)[c] 0.006416136(11.66)[parse] 0.011463236(20.83)[json]
0.001144914(2.08)[cProfile]

qsort     (8289, 5377):
0.002817679(1.00)[origin]
0.052747431(18.72)[py] 0.011339725(4.02)[parse] 0.023644345(8.39)[json]
0.004767673(1.69)[c] 0.008735166(3.10)[parse] 0.017173703(6.09)[json]
0.007248019(2.57)[cProfile]

slow_fib  (1135, 758):
0.028759652(1.00)[origin]
0.033994071(1.18)[py] 0.001630461(0.06)[parse] 0.003386635(0.12)[json]
0.029481623(1.03)[c] 0.001152415(0.04)[parse] 0.002191417(0.08)[json]
0.028289305(0.98)[cProfile]

Documentation

For full documentation, please see https://viztracer.readthedocs.io/en/stable

Bugs/Requests

Please send bug reports and feature requests through github issue tracker. VizTracer is currently under development now and it's open to any constructive suggestions.

License

Copyright Tian Gao, 2020.

Distributed under the terms of the Apache 2.0 license.

Comments
  • Feature request: magic command to use viztracer from within jupyter notebook

    Feature request: magic command to use viztracer from within jupyter notebook

    Note sure what would be the best way to implement this, but the usability of viztracer could be greatly improved for datascientists and other Python users who work in interactive envrionments based on Jupyter such as Jupyter Lab and VS Code notebooks.

    The setup use case would work as follow in jupyter notebook with the following cells:

    # Notebook cell to enable the viztracer <=> jupyter extension
    %load_ext viztracer
    
    # Here is a notebook 
    biggish_data = prepare_big_datastructure_or_load_from_disk()
    
    # Here is a notebook cell with some code to interactively
    # define some complex data processing function.
    
    def some_function(some_data, some_param=0.):
         # do complicated stuff
         ...
    
    # Here is a cell that profiles on
    %%viztracer
    some_function(biggish_data, some_param=42)
    

    The last cell would execute some_function(biggish_data, some_param=42) while recording the profiling events to a temp file on the disk and then automatically display an iframe with the perfetto viewer of the recorded events right below the code cell with the %%viztracer statement.

    If instead one uses %%viztracer --new-tab would open a new browser tab to the viewer instead of using an iframe.

    Finally %%viztracer --static-html would embed the legacy static HTML viewer in the output of the cell of the notebok document to make it easier to publish and share the notebook (e.g. on https://nbviewer.jupyter.org) so that other can browse the profiling output without having to run a (local or remote) server (for jupyter and vizviewer).

    It would also be possible to pass any viztracer commandline options to the magic command itself, for instance %%viztracer --log_gc --log_subprocess.

    This setup is really nice, because prepare_big_datastructure_or_load_from_disk can be very slow and the user might want to iterate quickly by editing the code of some_function in the previous cell based on the result of the previous profiling output without calling prepare_big_datastructure_or_load_from_disk() again each time.

    The last 2 cells could be even be collapsed into one for even faster coding iterations:

    # Here is a notebook cell with some code to interactively
    # define some complex data processing function and profile
    # it on the fly:
    
    def some_function(some_data, some_param=0.):
         # do complicated stuff
         ...
    
    %viztracer some_function(biggish_data, some_param=42)
    

    Related jupyter extensions for profilers that can be used for inspiration:

    • jupyter supports the %%prun profiler magic based on cProfile from the standard library by default.
    • line_profiler can register the %%lprun magic command.
    • snakeviz can register the %%snakeviz magic command. It has the --new-tab option I mentioned before.
    opened by ogrisel 23
  • VCompressor Benchmark

    VCompressor Benchmark

    As #249 mentioned, VCompressor is designed for a decent compress ratio. Here provides a benchmark framework to easily calculate performance improvement space-wise and time-wise on specific test cases.

    Note: Here, I chose to use LZMA, famous for its high compress ratio on average files, as a baseline in terms of space-wise benchmark.


    Main Features:

    • [x] Space-wise Benchmark
    • [x] Time-wise Benchmark
    • [x] Display compress ratio in the vcompressor benchmark
    • [x] Support multiple other compressors for comparison

    Other Important Change Log:

    • [x] FIX: custom repeat(previously loop_time) in _benchmark is now implemented correctly
    • [x] STYLE: All related functions and types are now placed in a single class, without affecting global namespace

    Output Example of this Benchmark Test:

    2022-09-05 23:01:24,684 INFO: tests.test_vcompressor.TestVCompressorPerformance.test_benchmark_basic start
    2022-09-05 23:01:26,302 INFO: 1. On file "vdb_basic.json":
    2022-09-05 23:01:26,302 INFO:     [Space]
    2022-09-05 23:01:26,302 INFO:       Uncompressed:       2.95KB
    2022-09-05 23:01:26,302 INFO:       VCompressor:      531.00B(1.000) [CR: 17.57%]
    2022-09-05 23:01:26,302 INFO:       LZMA:             504.00B(0.949) [CR: 16.68%]
    2022-09-05 23:01:26,303 INFO:     [Time]
    2022-09-05 23:01:26,303 INFO:       VCompressor:        0.405s(1.000)
    2022-09-05 23:01:26,303 INFO:       LZMA:               0.004s(0.010)
    2022-09-05 23:01:27,757 INFO: 2. On file "multithread.json":
    2022-09-05 23:01:27,757 INFO:     [Space]
    2022-09-05 23:01:27,757 INFO:       Uncompressed:     105.22KB
    2022-09-05 23:01:27,757 INFO:       VCompressor:        9.05KB(1.000) [CR:  8.60%]
    2022-09-05 23:01:27,757 INFO:       LZMA:              16.66KB(1.840) [CR: 15.83%]
    2022-09-05 23:01:27,757 INFO:     [Time]
    2022-09-05 23:01:27,757 INFO:       VCompressor:        0.330s(1.000)
    2022-09-05 23:01:27,757 INFO:       LZMA:               0.023s(0.071)
    2022-09-05 23:01:27,757 INFO: tests.test_vcompressor.TestVCompressorPerformance.test_benchmark_basic finish
    
    opened by Sefank 18
  • Fix test viewer

    Fix test viewer

    This is a pull request to solve issue #269. Summary:

    • Add _find_a_free_port into TestViewer
    • Add URL method to Viewer
    • Change cases use 9001 port to a free dynamic port found before creating a viewer.
    opened by acehinnnqru 14
  •  Trace with concurrent.futures.ProcessPoolExecutor

    Trace with concurrent.futures.ProcessPoolExecutor

    Hi,

    New to python multi-processing work and tried to profile an old code with a code multi-process/thread dispatcher code way like below

    def multi_process_dispatcher(single_worker_func, data_list_to_dispatch,  job_num):
        """ multi  process dispatcher """
        output = []
        with concurrent.futures.ProcessPoolExecutor(job_num) as executor:
            for _, data_collected in zip(check_list, executor.map(single_worker_func, data_list_to_dispatch)):
                if data_collected is not None:
                    output += data_collected
            output.sort()
        return output
    
    def multi_thread_dispatcher(single_worker_func, data_list_to_dispatch, job_num):
        """ multi thread dispatcher """
        output = []
        # max_workers=job_num
        with concurrent.futures.ThreadPoolExecutor(job_num) as executor:
            for _, data_collected in zip(check_list, executor.map(single_worker_func, data_list_to_dispatch)):
                if data_collected is not None:
                    output += data_collected
            output.sort()
        return output
    

    in doc saying:

    pass this argument to your sub-process, and instantiate a VizTracer object with it

    # init_kwargs is the argument from main process
    tracer = VizTracer(**init_kwargs)
    tracer.register_exit()
    tracer.start()
    

    any good idea of embeding trace with ProcessPoolExecutor ? the data_list is dispatched with map actually I think

    Thanks

    bug 
    opened by butterl 14
  • `json_tokenizer_failure` in Perfetto

    `json_tokenizer_failure` in Perfetto

    Importing the JSON output fails in Perfetto, showing something like this:

    Screen Shot 2021-04-06 at 6 29 22 PM

    Here's the JSON produced by viztracer -o test.json vt-test.py: https://gist.github.com/gjoseph92/f5c21ad1b328c8bed3e472be92a32342

    And the contents of vt-test.py (tried a few different scripts; doesn't seem to matter):

    x = 0
    for i in range(10000):
        x += 1
    

    Note that the JSON loads fine in catapult.

    I've replicated this with viztracer==0.11.4, viztracer==0.12.0, viztracer==0.12.1, viztracer==0.12.2, viztracer==0.12.3.

    The fact that it replicates even with older versions makes me think it's a Perfetto issue, but I wanted to open the issue here first in case anyone has seen this before, or it's an issue with viztracer's formatting of the JSON. If it's not viztracer's problem, I'm happy to move this to https://github.com/google/perfetto/issues

    System:

    • macOS 11.2 (x86)
    • Python 3.8.8
    opened by gjoseph92 13
  • enhancement: support docker

    enhancement: support docker

    seems Vizviewer is same with Nvidia NSight, the logger can run in container but cannot forward the visualisation to host. i have to host the viewer on main OS. this probably will help developer to benchmark on cloud. thank you for paying attention to my comment.

    enhancement 
    opened by royinx 12
  • Fix All flake8 Errors and Add a dedicated flake8 Github Action

    Fix All flake8 Errors and Add a dedicated flake8 Github Action

    Fix flake8 errors and add a dedicated flake8 Github action. Also, add a flake8 badge to README.

    Two errors are ignored:

    • C901: Function is too complex (too much branching logic). This PR is meant to fix the style issues.
    • W503: line break before binary operator. It's not compatible with PEP8.

    Original flake8 errors:

    $ flake8 . --count --ignore=C901,W503 --max-complexity=10 --max-line-length=127 --statistics
    ./setup.py:28:20: E231 missing whitespace after ':'
    ./setup.py:39:20: E251 unexpected spaces around keyword / parameter equals
    ./setup.py:39:22: E251 unexpected spaces around keyword / parameter equals
    ./example/generate_examples.py:13:45: E225 missing whitespace around operator
    ./example/generate_examples.py:18:35: W291 trailing whitespace
    ./example/generate_examples.py:26:39: W292 no newline at end of file
    ./example/src/different_sorts.py:77:1: E302 expected 2 blank lines, found 1
    ./example/src/different_sorts.py:126:20: W292 no newline at end of file
    ./example/src/gradient_descent.py:120:34: E226 missing whitespace around arithmetic operator
    ./example/src/logging_integration.py:10:17: E226 missing whitespace around arithmetic operator
    ./example/src/logging_integration.py:10:28: E226 missing whitespace around arithmetic operator
    ./example/src/logging_integration.py:17:7: W292 no newline at end of file
    ./example/src/function_args_return.py:8:17: E226 missing whitespace around arithmetic operator
    ./example/src/function_args_return.py:8:28: E226 missing whitespace around arithmetic operator
    ./example/src/function_args_return.py:11:35: W291 trailing whitespace
    ./example/src/function_args_return.py:12:37: W291 trailing whitespace
    ./example/src/multithread.py:11:17: E226 missing whitespace around arithmetic operator
    ./example/src/multithread.py:11:28: E226 missing whitespace around arithmetic operator
    ./example/src/multithread.py:25:1: W293 blank line contains whitespace
    ./example/src/multithread.py:30:1: W293 blank line contains whitespace
    ./example/src/multithread.py:32:1: W293 blank line contains whitespace
    ./example/src/mcts_game.py:80:48: W292 no newline at end of file
    ./tests/test_multiprocess.py:12:1: E122 continuation line missing indentation or outdented
    ./tests/test_multiprocess.py:19:1: E122 continuation line missing indentation or outdented
    ./tests/test_multiprocess.py:28:1: E122 continuation line missing indentation or outdented
    ./tests/test_multiprocess.py:42:1: E122 continuation line missing indentation or outdented
    ./tests/test_multiprocess.py:65:1: E122 continuation line missing indentation or outdented
    ./tests/test_multiprocess.py:93:1: E122 continuation line missing indentation or outdented
    ./tests/test_multiprocess.py:134:128: E501 line too long (175 > 127 characters)
    ./tests/test_multiprocess.py:145:128: E501 line too long (179 > 127 characters)
    ./tests/test_multiprocess.py:155:128: E501 line too long (221 > 127 characters)
    ./tests/test_multiprocess.py:159:128: E501 line too long (214 > 127 characters)
    ./tests/test_multiprocess.py:161:128: E501 line too long (173 > 127 characters)
    ./tests/test_multiprocess.py:168:128: E501 line too long (233 > 127 characters)
    ./tests/cmdline_tmpl.py:12:1: E122 continuation line missing indentation or outdented
    ./tests/test_cmdline.py:12:1: E122 continuation line missing indentation or outdented
    ./tests/test_cmdline.py:19:1: E122 continuation line missing indentation or outdented
    ./tests/test_cmdline.py:27:1: E122 continuation line missing indentation or outdented
    ./tests/test_cmdline.py:34:1: E122 continuation line missing indentation or outdented
    ./tests/test_cmdline.py:42:1: E122 continuation line missing indentation or outdented
    ./tests/test_cmdline.py:50:1: E122 continuation line missing indentation or outdented
    ./tests/test_cmdline.py:79:1: E122 continuation line missing indentation or outdented
    ./tests/test_cmdline.py:100:1: E122 continuation line missing indentation or outdented
    ./tests/test_cmdline.py:120:1: E122 continuation line missing indentation or outdented
    ./tests/test_cmdline.py:129:1: E122 continuation line missing indentation or outdented
    ./tests/test_cmdline.py:154:128: E501 line too long (128 > 127 characters)
    ./tests/test_cmdline.py:155:128: E501 line too long (134 > 127 characters)
    ./tests/test_cmdline.py:157:128: E501 line too long (139 > 127 characters)
    ./tests/test_cmdline.py:158:128: E501 line too long (145 > 127 characters)
    ./tests/test_cmdline.py:174:128: E501 line too long (136 > 127 characters)
    ./tests/test_cmdline.py:176:128: E501 line too long (183 > 127 characters)
    ./tests/test_cmdline.py:177:128: E501 line too long (180 > 127 characters)
    ./tests/test_cmdline.py:182:128: E501 line too long (136 > 127 characters)
    ./tests/test_cmdline.py:184:128: E501 line too long (173 > 127 characters)
    ./tests/test_cmdline.py:201:128: E501 line too long (156 > 127 characters)
    ./tests/test_cmdline.py:206:17: E128 continuation line under-indented for visual indent
    ./tests/test_cmdline.py:207:128: E501 line too long (140 > 127 characters)
    ./tests/test_cmdline.py:208:17: E128 continuation line under-indented for visual indent
    ./tests/test_cmdline.py:215:128: E501 line too long (156 > 127 characters)
    ./tests/test_cmdline.py:223:128: E501 line too long (150 > 127 characters)
    ./tests/test_cmdline.py:224:128: E501 line too long (182 > 127 characters)
    ./tests/test_cmdline.py:236:128: E501 line too long (176 > 127 characters)
    ./tests/test_cmdline.py:237:128: E501 line too long (174 > 127 characters)
    ./tests/test_cmdline.py:238:128: E501 line too long (180 > 127 characters)
    ./tests/test_cmdline.py:241:128: E501 line too long (175 > 127 characters)
    ./tests/test_cmdline.py:249:128: E501 line too long (188 > 127 characters)
    ./tests/test_cmdline.py:252:128: E501 line too long (186 > 127 characters)
    ./tests/test_cmdline.py:255:128: E501 line too long (178 > 127 characters)
    ./tests/test_cmdline.py:257:128: E501 line too long (177 > 127 characters)
    ./tests/test_cmdline.py:263:128: E501 line too long (164 > 127 characters)
    ./tests/test_cmdline.py:276:128: E501 line too long (162 > 127 characters)
    ./tests/test_performance.py:77:128: E501 line too long (174 > 127 characters)
    ./tests/test_performance.py:78:128: E501 line too long (150 > 127 characters)
    ./tests/test_logsparse.py:11:1: E122 continuation line missing indentation or outdented
    ./tests/test_logsparse.py:26:1: E122 continuation line missing indentation or outdented
    ./tests/test_logsparse.py:61:128: E501 line too long (167 > 127 characters)
    ./tests/test_logsparse.py:62:128: E501 line too long (154 > 127 characters)
    ./tests/test_logsparse.py:72:128: E501 line too long (228 > 127 characters)
    ./tests/test_prog_snapshot.py:9:128: E501 line too long (1405 > 127 characters)
    ./tests/test_prog_snapshot.py:76:128: E501 line too long (210 > 127 characters)
    ./tests/test_prog_snapshot.py:80:128: E501 line too long (319 > 127 characters)
    ./tests/test_prog_snapshot.py:94:128: E501 line too long (318 > 127 characters)
    ./tests/test_prog_snapshot.py:102:128: E501 line too long (375 > 127 characters)
    ./tests/test_regression.py:94:1: E122 continuation line missing indentation or outdented
    ./tests/test_regression.py:111:128: E501 line too long (128 > 127 characters)
    ./tests/test_regression.py:121:1: E122 continuation line missing indentation or outdented
    ./tests/test_regression.py:164:1: E122 continuation line missing indentation or outdented
    ./tests/test_regression.py:183:128: E501 line too long (153 > 127 characters)
    ./tests/test_regression.py:189:128: E501 line too long (129 > 127 characters)
    ./tests/data/vdb_multithread.py:10:16: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_multithread.py:10:26: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_multithread.py:17:17: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_multithread.py:17:28: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_basic.py:1:1: E265 block comment should start with '# '
    ./tests/data/vdb_basic.py:2:1: F401 'time' imported but unused
    ./tests/data/vdb_basic.py:4:1: E265 block comment should start with '# '
    ./tests/data/vdb_basic.py:10:13: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_basic.py:10:16: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_basic.py:12:1: E302 expected 2 blank lines, found 1
    ./tests/data/vdb_basic.py:15:5: E265 block comment should start with '# '
    ./tests/data/vdb_basic.py:17:1: E302 expected 2 blank lines, found 1
    ./tests/data/vdb_basic.py:18:5: E265 block comment should start with '# '
    ./tests/data/vdb_basic.py:19:10: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_basic.py:21:8: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_basic.py:21:13: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_basic.py:22:5: E265 block comment should start with '# '
    ./tests/data/vdb_basic.py:25:1: E302 expected 2 blank lines, found 1
    ./tests/data/vdb_basic.py:26:8: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_basic.py:26:13: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_basic.py:28:8: E226 missing whitespace around arithmetic operator
    ./tests/data/vdb_basic.py:30:1: E305 expected 2 blank lines after class or function definition, found 1
    ./tests/data/vdb_basic.py:36:30: W292 no newline at end of file
    ./tests/data/fib.py:4:17: E226 missing whitespace around arithmetic operator
    ./tests/data/fib.py:4:28: E226 missing whitespace around arithmetic operator
    ./docs/source/conf.py:1:1: F401 'sphinx_rtd_theme' imported but unused
    ./docs/source/conf.py:65:31: W292 no newline at end of file
    ./src/viztracer/report_builder.py:63:21: E127 continuation line over-indented for visual indent
    ./src/viztracer/report_builder.py:67:128: E501 line too long (144 > 127 characters)
    ./src/viztracer/viztracer.py:36:17: E126 continuation line over-indented for hanging indent
    ./src/viztracer/functree.py:46:17: E126 continuation line over-indented for hanging indent
    ./src/viztracer/main.py:51:128: E501 line too long (135 > 127 characters)
    ./src/viztracer/main.py:53:128: E501 line too long (140 > 127 characters)
    ./src/viztracer/main.py:89:128: E501 line too long (162 > 127 characters)
    ./src/viztracer/main.py:97:128: E501 line too long (129 > 127 characters)
    ./src/viztracer/main.py:137:128: E501 line too long (145 > 127 characters)
    ./src/viztracer/main.py:354:128: E501 line too long (138 > 127 characters)
    ./src/viztracer/tracer.py:296:128: E501 line too long (133 > 127 characters)
    ./src/viztracer/tracer.py:297:128: E501 line too long (161 > 127 characters)
    ./src/viztracer/code_monkey.py:160:21: E126 continuation line over-indented for hanging indent
    ./src/viztracer/code_monkey.py:166:21: E126 continuation line over-indented for hanging indent
    ./src/viztracer/code_monkey.py:172:21: E126 continuation line over-indented for hanging indent
    ./src/viztracer/code_monkey.py:181:17: E126 continuation line over-indented for hanging indent
    22    E122 continuation line missing indentation or outdented
    6     E126 continuation line over-indented for hanging indent
    1     E127 continuation line over-indented for visual indent
    2     E128 continuation line under-indented for visual indent
    1     E225 missing whitespace around operator
    21    E226 missing whitespace around arithmetic operator
    1     E231 missing whitespace after ':'
    2     E251 unexpected spaces around keyword / parameter equals
    5     E265 block comment should start with '# '
    4     E302 expected 2 blank lines, found 1
    1     E305 expected 2 blank lines after class or function definition, found 1
    52    E501 line too long (135 > 127 characters)
    2     F401 'sphinx_rtd_theme' imported but unused
    3     W291 trailing whitespace
    6     W292 no newline at end of file
    3     W293 blank line contains whitespace
    132
    
    opened by luoos 11
  • Add Linux AArch64 wheel build support

    Add Linux AArch64 wheel build support

    Added linux aarch64 wheel build support. Related to https://github.com/gaogaotiantian/viztracer/issues/190, @gaogaotiantian Could you please review this PR?

    opened by odidev 9
  • Subprocess injection mechanism gaps make it impossible to try tracing pip's behaviour

    Subprocess injection mechanism gaps make it impossible to try tracing pip's behaviour

    I think the title covers my usecase. :)

    In a clean virtualenv, install viztracer, and then run:

    viztracer -m pip install --debug requests --no-binary :all:
    

    You'll notice that all of pip's subprocess calls will fail:

      ERROR: Command errored out with exit status 2:
       command: /Users/pradyunsg/Developer/pip/.venv/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/y1/j465wvf92vs938kmgqh63bj80000gn/T/pip-install-z2tj4fa8/requests_82de87b5220c4e10809d513d90ca41a5/setup.py'"'"'; __file__='"'"'/private/var/folders/y1/j465wvf92vs938kmgqh63bj80000gn/T/pip-install-z2tj4fa8/requests_82de87b5220c4e10809d513d90ca41a5/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/y1/j465wvf92vs938kmgqh63bj80000gn/T/pip-pip-egg-info-0gaf3f7n
           cwd: /private/var/folders/y1/j465wvf92vs938kmgqh63bj80000gn/T/pip-install-z2tj4fa8/requests_82de87b5220c4e10809d513d90ca41a5/
      Complete output (5 lines):
      
      Usage:
        /Users/pradyunsg/Developer/pip/.venv/bin/python -m pip <command> [options]
      
      no such option: -c
      ----------------------------------------
    
    bug 
    opened by pradyunsg 9
  • viztracer reports twice and does not show the subprocesses tracks on a loky-based multiprocessing program

    viztracer reports twice and does not show the subprocesses tracks on a loky-based multiprocessing program

    loky is an extension of concurrent.futures ProcessPoolExecutor with the spawn start method to keep a running process pool in the background to avoid paying the process start time each time a process pool is needed. Furthermore it uses cloudpickle to make it possible to call interactively defined functions (in the __main__ module) or lambda closures and such.

    Here is the reproducer:

    pip install loky
    
    from loky import get_reusable_executor
    import time
    import random
    import os
    
    
    def my_function(*args):
       pid = os.getpid()
       duration = random.random() * 2
       print(f"[{pid}] sleeping {duration:.3f} s")
       time.sleep(duration)
       print(f"[{pid}] done")
    
    
    
    e = get_reusable_executor(max_workers=4)
    
    print("[main] start")
    e.map(my_function, range(8))
    
    e = get_reusable_executor(max_workers=4)
    e.map(my_function, range(8))
    
    print("[main] done")
    
    ❯ viztracer --log_subprocess --log_multiprocess bench_loky.py
    [main] start
    [main] done
    [26109] sleeping 1.471 s
    [26106] sleeping 1.364 s
    [26107] sleeping 0.170 s
    [26108] sleeping 1.002 s
    [26107] done
    [26107] sleeping 0.877 s
    [26108] done
    [26108] sleeping 1.297 s
    [26107] done
    [26107] sleeping 1.635 s
    [26106] done
    [26106] sleeping 1.079 s
    [26109] done
    [26109] sleeping 1.809 s
    [26108] done
    [26108] sleeping 1.962 s
    [26106] done
    [26106] sleeping 1.377 s
    [26107] done
    [26107] sleeping 0.973 s
    [26109] done
    [26109] sleeping 1.528 s
    [26107] done
    [26107] sleeping 0.615 s
    [26106] done
    [26106] sleeping 0.256 s
    [26106] done
    [26106] sleeping 1.554 s
    [26108] done
    [26107] done
    [26109] done
    [26106] done
    Loading finish                                        
    ==================================================
    == Starting from version 0.13.0, VizTracer will ==
    == use json as the default report file. You can ==
    == generate HTML report with "-o result.html"   ==
    ==================================================
    Dumping trace data, total entries: 31753
    Saving report to /Users/ogrisel/viztracer_multiprocess_tmp_26103_1629359788/result_26103.json ...
    Use "vizviewer <your_report>" to open the report
    ==================================================
    == Starting from version 0.13.0, VizTracer will ==
    == use json as the default report file. You can ==
    == generate HTML report with "-o result.html"   ==
    ==================================================
    Dumping trace data, total entries: 31753
    Saving report to /Users/ogrisel/result.json ...
    Use "vizviewer <your_report>" to open the report
    

    The reports does not show the subprocesses.

    Python: 3.9.2 on macOS.

    opened by ogrisel 9
  • 运行django访问api接口, 使用log_sparse未能生成报告; 而运行flask访问api接口, 则报错退出

    运行django访问api接口, 使用log_sparse未能生成报告; 而运行flask访问api接口, 则报错退出

    我想用log_sparse功能监控web程序中某段代码的性能, 但django程序中未生产报告, 而flask则直接报错退出, 请问为啥呀?

    mac 10.15.4 python 3.6.8 Django 3.1.3 Flask 1.1.2

    from django.views.decorators.http import require_GET
    from django.http import HttpResponse
    from viztracer import log_sparse
    
    @require_GET
    def index(request):
        ret = hello()
        return HttpResponse(ret)
    
    @log_sparse
    def hello():
        return 'hello world'
    
    viztracer --log_sparse manage.py runserver
    Watching for file changes with StatReloader
    Performing system checks...
    
    System check identified no issues (0 silenced).
    December 20, 2020 - 13:05:59
    Django version 3.1.3, using settings 'cbv_demo.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CONTROL-C.
    [20/Dec/2020 13:06:01] "GET /index/ HTTP/1.1" 200 11
    [20/Dec/2020 13:06:02] "GET /index/ HTTP/1.1" 200 11
    [20/Dec/2020 13:06:02] "GET /index/ HTTP/1.1" 200 11
    ^CSaving report to /Users/admin/Documents/pythonprojects/cbv_demo/result.html ...
    Dumping trace data to json, total entries: 0, estimated json file size: 0.0B
    Generating HTML report
    Report saved.
    
    from flask import Flask
    from viztracer import log_sparse
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def hello_world():
        return hello()
    
    
    def hello():
        win()
        return 'Hello, World!'
    
    
    @log_sparse
    def win():
        x = 4 + 4
        return 'win'
    
    
    if __name__ == '__main__':
        app.run()
    
    ➜  cbv_demo git:(master) ✗ python3 -m viztracer --log_sparse flask_demo.py
     * Serving Flask app "flask_demo" (lazy loading)
     * Environment: production
       WARNING: This is a development server. Do not use it in a production deployment.
       Use a production WSGI server instead.
     * Debug mode: off
     * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    
    # 请求127.0.0.1:5000/ 程序报错退出
    [1]    7622 segmentation fault  python3 -m viztracer --log_sparse flask_demo.py
    

    报错信息: Process: Python [7566] Path: /Library/Frameworks/Python.framework/Versions/3.6/Resources/Python.app/Contents/MacOS/Python Identifier: Python Version: 3.6.8 (3.6.8) Code Type: X86-64 (Native) Parent Process: zsh [3163] Responsible: pycharm [766] User ID: 501

    Date/Time: 2020-12-20 20:55:41.790 +0800 OS Version: Mac OS X 10.15.4 (19E287) Report Version: 12 Anonymous UUID: A0094B33-5625-98F4-EAFE-D7C8980D3E61

    Sleep/Wake UUID: 5CDACBA0-34C7-45DE-9148-1346AF15F3C4

    Time Awake Since Boot: 3500 seconds Time Since Wake: 1900 seconds

    System Integrity Protection: disabled

    Crashed Thread: 1

    Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000010 Exception Note: EXC_CORPSE_NOTIFY

    Termination Signal: Segmentation fault: 11 Termination Reason: Namespace SIGNAL, Code 0xb Terminating Process: exc handler [7566]

    VM Regions Near 0x10: --> __TEXT 000000010196b000-000000010196c000 [ 4K] r-x/rwx SM=COW /Library/Frameworks/Python.framework/Versions/3.6/Resources/Python.app/Contents/MacOS/Python

    Thread 0:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x00007fff6ed283d6 poll + 10 1 select.cpython-36m-darwin.so 0x000000010214f962 poll_poll + 466 2 org.python.python 0x00000001019c77cb _PyCFunction_FastCallDict + 491 3 org.python.python 0x0000000101a49747 call_function + 439 4 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 5 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 6 org.python.python 0x0000000101a4aae1 fast_function + 545 7 org.python.python 0x0000000101a49721 call_function + 401 8 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 9 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 10 org.python.python 0x0000000101a4aae1 fast_function + 545 11 org.python.python 0x0000000101a49721 call_function + 401 12 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 13 org.python.python 0x0000000101a4aa3d fast_function + 381 14 org.python.python 0x0000000101a49721 call_function + 401 15 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 16 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 17 org.python.python 0x0000000101a4aae1 fast_function + 545 18 org.python.python 0x0000000101a49721 call_function + 401 19 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 20 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 21 org.python.python 0x0000000101a3f2bb PyEval_EvalCodeEx + 107 22 org.python.python 0x00000001019a80cd function_call + 381 23 org.python.python 0x000000010197e4f0 PyObject_Call + 96 24 org.python.python 0x0000000101a4619a _PyEval_EvalFrameDefault + 28298 25 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 26 org.python.python 0x0000000101a4aae1 fast_function + 545 27 org.python.python 0x0000000101a49721 call_function + 401 28 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 29 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 30 org.python.python 0x0000000101a3f244 PyEval_EvalCode + 100 31 org.python.python 0x0000000101a3c8c4 builtin_exec + 548 32 org.python.python 0x00000001019c77cb _PyCFunction_FastCallDict + 491 33 org.python.python 0x0000000101a49747 call_function + 439 34 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 35 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 36 org.python.python 0x0000000101a4aae1 fast_function + 545 37 org.python.python 0x0000000101a49721 call_function + 401 38 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 39 org.python.python 0x0000000101a4aa3d fast_function + 381 40 org.python.python 0x0000000101a49721 call_function + 401 41 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 42 org.python.python 0x0000000101a4aa3d fast_function + 381 43 org.python.python 0x0000000101a49721 call_function + 401 44 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 45 org.python.python 0x0000000101a4aa3d fast_function + 381 46 org.python.python 0x0000000101a49721 call_function + 401 47 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 48 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 49 org.python.python 0x0000000101a3f244 PyEval_EvalCode + 100 50 org.python.python 0x0000000101a3c8c4 builtin_exec + 548 51 org.python.python 0x00000001019c77cb _PyCFunction_FastCallDict + 491 52 org.python.python 0x0000000101a49747 call_function + 439 53 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 54 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 55 org.python.python 0x0000000101a4aae1 fast_function + 545 56 org.python.python 0x0000000101a49721 call_function + 401 57 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 58 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 59 org.python.python 0x0000000101a3f2bb PyEval_EvalCodeEx + 107 60 org.python.python 0x00000001019a80cd function_call + 381 61 org.python.python 0x000000010197e4f0 PyObject_Call + 96 62 org.python.python 0x0000000101a8ee73 RunModule + 147 63 org.python.python 0x0000000101a8e828 Py_Main + 2808 64 org.python.python 0x000000010196bdf8 0x10196b000 + 3576 65 libdyld.dylib 0x00007fff6ebe0cc9 start + 1

    Thread 1 Crashed: 0 snaptrace.cpython-36m-darwin.so 0x00000001021ac1e6 snaptrace_addraw + 150 1 org.python.python 0x00000001019c77cb _PyCFunction_FastCallDict + 491 2 org.python.python 0x0000000101a49747 call_function + 439 3 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 4 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 5 org.python.python 0x0000000101a4aae1 fast_function + 545 6 org.python.python 0x0000000101a49721 call_function + 401 7 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 8 org.python.python 0x0000000101a4aa3d fast_function + 381 9 org.python.python 0x0000000101a49721 call_function + 401 10 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 11 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 12 org.python.python 0x0000000101a3f2bb PyEval_EvalCodeEx + 107 13 org.python.python 0x00000001019a80cd function_call + 381 14 org.python.python 0x000000010197e4f0 PyObject_Call + 96 15 org.python.python 0x0000000101a4619a _PyEval_EvalFrameDefault + 28298 16 org.python.python 0x0000000101a4aa3d fast_function + 381 17 org.python.python 0x0000000101a49721 call_function + 401 18 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 19 org.python.python 0x0000000101a4aa3d fast_function + 381 20 org.python.python 0x0000000101a49721 call_function + 401 21 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 22 org.python.python 0x0000000101a4aa3d fast_function + 381 23 org.python.python 0x0000000101a49721 call_function + 401 24 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 25 org.python.python 0x0000000101a4ac5c _PyFunction_FastCallDict + 348 26 org.python.python 0x000000010197e6b7 _PyObject_FastCallDict + 247 27 org.python.python 0x000000010197e7d5 _PyObject_Call_Prepend + 149 28 org.python.python 0x000000010197e4f0 PyObject_Call + 96 29 org.python.python 0x00000001019dec85 slot_tp_call + 117 30 org.python.python 0x000000010197e685 _PyObject_FastCallDict + 197 31 org.python.python 0x0000000101a49648 call_function + 184 32 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 33 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 34 org.python.python 0x0000000101a4aae1 fast_function + 545 35 org.python.python 0x0000000101a49721 call_function + 401 36 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 37 org.python.python 0x0000000101a4a1af _PyEval_EvalCodeWithName + 2447 38 org.python.python 0x0000000101a4aae1 fast_function + 545 39 org.python.python 0x0000000101a49721 call_function + 401 40 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 41 org.python.python 0x0000000101a4aa3d fast_function + 381 42 org.python.python 0x0000000101a49721 call_function + 401 43 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 44 org.python.python 0x0000000101a4aa3d fast_function + 381 45 org.python.python 0x0000000101a49721 call_function + 401 46 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 47 org.python.python 0x0000000101a4aa3d fast_function + 381 48 org.python.python 0x0000000101a49721 call_function + 401 49 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 50 org.python.python 0x0000000101a4ac5c _PyFunction_FastCallDict + 348 51 org.python.python 0x000000010197e6b7 _PyObject_FastCallDict + 247 52 org.python.python 0x000000010197e7d5 _PyObject_Call_Prepend + 149 53 org.python.python 0x000000010197e4f0 PyObject_Call + 96 54 org.python.python 0x00000001019dfadd slot_tp_init + 125 55 org.python.python 0x00000001019dbd09 type_call + 313 56 org.python.python 0x000000010197e685 _PyObject_FastCallDict + 197 57 org.python.python 0x0000000101a49648 call_function + 184 58 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 59 org.python.python 0x0000000101a4aa3d fast_function + 381 60 org.python.python 0x0000000101a49721 call_function + 401 61 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 62 org.python.python 0x0000000101a4ac5c _PyFunction_FastCallDict + 348 63 org.python.python 0x000000010197e6b7 _PyObject_FastCallDict + 247 64 org.python.python 0x000000010197e7d5 _PyObject_Call_Prepend + 149 65 org.python.python 0x000000010197e4f0 PyObject_Call + 96 66 org.python.python 0x0000000101a4619a _PyEval_EvalFrameDefault + 28298 67 org.python.python 0x0000000101a4aa3d fast_function + 381 68 org.python.python 0x0000000101a49721 call_function + 401 69 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 70 org.python.python 0x0000000101a4aa3d fast_function + 381 71 org.python.python 0x0000000101a49721 call_function + 401 72 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 73 org.python.python 0x0000000101a4ac5c _PyFunction_FastCallDict + 348 74 org.python.python 0x000000010197e6b7 _PyObject_FastCallDict + 247 75 org.python.python 0x000000010197e7d5 _PyObject_Call_Prepend + 149 76 org.python.python 0x000000010197e4f0 PyObject_Call + 96 77 org.python.python 0x0000000101a91396 t_bootstrap + 70 78 org.python.python 0x0000000101a8abe9 pythread_wrapper + 25 79 libsystem_pthread.dylib 0x00007fff6ede5109 _pthread_start + 148 80 libsystem_pthread.dylib 0x00007fff6ede0b8b thread_start + 15

    Thread 2: 0 libsystem_kernel.dylib 0x00007fff6ed253a6 __recvfrom + 10 1 _socket.cpython-36m-darwin.so 0x0000000102133dbb sock_recv_impl + 27 2 _socket.cpython-36m-darwin.so 0x0000000102133461 sock_call_ex + 529 3 _socket.cpython-36m-darwin.so 0x00000001021315b9 sock_recv_into + 265 4 org.python.python 0x00000001019c7697 _PyCFunction_FastCallDict + 183 5 org.python.python 0x0000000101a49747 call_function + 439 6 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 7 org.python.python 0x0000000101a4ac5c _PyFunction_FastCallDict + 348 8 org.python.python 0x000000010197e6b7 _PyObject_FastCallDict + 247 9 org.python.python 0x000000010197e7d5 _PyObject_Call_Prepend + 149 10 org.python.python 0x000000010197e685 _PyObject_FastCallDict + 197 11 org.python.python 0x000000010197f468 PyObject_CallMethodObjArgs + 520 12 org.python.python 0x0000000101ac9bf7 _bufferedreader_raw_read + 135 13 org.python.python 0x0000000101ac9f76 _buffered_readline + 662 14 org.python.python 0x0000000101ac8f0e _io__Buffered_readline + 78 15 org.python.python 0x00000001019c77cb _PyCFunction_FastCallDict + 491 16 org.python.python 0x0000000101a49747 call_function + 439 17 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 18 org.python.python 0x0000000101a4aa3d fast_function + 381 19 org.python.python 0x0000000101a49721 call_function + 401 20 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 21 org.python.python 0x0000000101a4aa3d fast_function + 381 22 org.python.python 0x0000000101a49721 call_function + 401 23 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 24 org.python.python 0x0000000101a4aa3d fast_function + 381 25 org.python.python 0x0000000101a49721 call_function + 401 26 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 27 org.python.python 0x0000000101a4ac5c _PyFunction_FastCallDict + 348 28 org.python.python 0x000000010197e6b7 _PyObject_FastCallDict + 247 29 org.python.python 0x000000010197e7d5 _PyObject_Call_Prepend + 149 30 org.python.python 0x000000010197e4f0 PyObject_Call + 96 31 org.python.python 0x00000001019dfadd slot_tp_init + 125 32 org.python.python 0x00000001019dbd09 type_call + 313 33 org.python.python 0x000000010197e685 _PyObject_FastCallDict + 197 34 org.python.python 0x0000000101a49648 call_function + 184 35 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 36 org.python.python 0x0000000101a4aa3d fast_function + 381 37 org.python.python 0x0000000101a49721 call_function + 401 38 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 39 org.python.python 0x0000000101a4ac5c _PyFunction_FastCallDict + 348 40 org.python.python 0x000000010197e6b7 _PyObject_FastCallDict + 247 41 org.python.python 0x000000010197e7d5 _PyObject_Call_Prepend + 149 42 org.python.python 0x000000010197e4f0 PyObject_Call + 96 43 org.python.python 0x0000000101a4619a _PyEval_EvalFrameDefault + 28298 44 org.python.python 0x0000000101a4aa3d fast_function + 381 45 org.python.python 0x0000000101a49721 call_function + 401 46 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 47 org.python.python 0x0000000101a4aa3d fast_function + 381 48 org.python.python 0x0000000101a49721 call_function + 401 49 org.python.python 0x0000000101a45eb7 _PyEval_EvalFrameDefault + 27559 50 org.python.python 0x0000000101a4ac5c _PyFunction_FastCallDict + 348 51 org.python.python 0x000000010197e6b7 _PyObject_FastCallDict + 247 52 org.python.python 0x000000010197e7d5 _PyObject_Call_Prepend + 149 53 org.python.python 0x000000010197e4f0 PyObject_Call + 96 54 org.python.python 0x0000000101a91396 t_bootstrap + 70 55 org.python.python 0x0000000101a8abe9 pythread_wrapper + 25 56 libsystem_pthread.dylib 0x00007fff6ede5109 _pthread_start + 148 57 libsystem_pthread.dylib 0x00007fff6ede0b8b thread_start + 15

    Thread 1 crashed with X86 Thread State (64-bit): rax: 0x0000000000000000 rbx: 0x00000001023aacd8 rcx: 0x67a073f6361200ef rdx: 0x0000000000000001 rdi: 0x0000000107c4dcf0 rsi: 0x00000000000f4241 rbp: 0x000070000b72bdc0 rsp: 0x000070000b72bd90 r8: 0x000070000b72bae0 r9: 0x0000000107c4dcf0 r10: 0x00000001024ac7f0 r11: 0x0000000000000001 r12: 0x0000000000000000 r13: 0x00000001024ac7f0 r14: 0x0000000000000000 r15: 0x00000001024d8000 rip: 0x00000001021ac1e6 rfl: 0x0000000000010202 cr2: 0x000070000bc2fff8

    Logical CPU: 0 Error Code: 0x0200001d Trap Number: 133

    Binary Images: 0x10196b000 - 0x10196bff7 +org.python.python (3.6.8 - 3.6.8) /Library/Frameworks/Python.framework/Versions/3.6/Resources/Python.app/Contents/MacOS/Python 0x101971000 - 0x101b2aff7 +org.python.python (3.6.8, [c] 2001-2018 Python Software Foundation. - 3.6.8) /Library/Frameworks/Python.framework/Versions/3.6/Python 0x101f71000 - 0x101f72fff +_heapq.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_heapq.cpython-36m-darwin.so 0x1020c0000 - 0x1020c4ff7 +_struct.cpython-36m-darwin.so (0) <27E4E8D7-B1F1-3F7B-99EA-B7AB43D0A2D4> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_struct.cpython-36m-darwin.so 0x10210d000 - 0x102120fff +_pickle.cpython-36m-darwin.so (0) <604415D5-D401-37AC-83AC-F664F152067D> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_pickle.cpython-36m-darwin.so 0x10212c000 - 0x102135fff +_socket.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_socket.cpython-36m-darwin.so 0x102141000 - 0x102146fff +math.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/math.cpython-36m-darwin.so 0x10214d000 - 0x102150fff +select.cpython-36m-darwin.so (0) <51598834-4A42-3CAB-8780-04E370698047> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/select.cpython-36m-darwin.so 0x102156000 - 0x10215bff7 +array.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/array.cpython-36m-darwin.so 0x1021a4000 - 0x1021a5ff7 +_posixsubprocess.cpython-36m-darwin.so (0) <1A4B9EDF-57D8-33D0-BBD6-D701EA8D5948> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_posixsubprocess.cpython-36m-darwin.so 0x1021a9000 - 0x1021acffb +snaptrace.cpython-36m-darwin.so (0) /Users/USER/Documents/*/snaptrace.cpython-36m-darwin.so 0x1021b5000 - 0x1021bafff +_json.cpython-36m-darwin.so (0) <8F79E674-2D90-3624-B862-88C6617C3308> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_json.cpython-36m-darwin.so 0x1021ff000 - 0x102202ff7 +zlib.cpython-36m-darwin.so (0) <43674D69-1EF0-3ABE-92F4-6BE32AFABD21> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/zlib.cpython-36m-darwin.so 0x102217000 - 0x102218ff7 +_bz2.cpython-36m-darwin.so (0) <7284FE73-5311-3A08-B0ED-7A2442A88DB5> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_bz2.cpython-36m-darwin.so 0x10221c000 - 0x10221cfff +grp.cpython-36m-darwin.so (0) <2FCC7D8C-F776-33BD-991E-D85DE54DC027> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/grp.cpython-36m-darwin.so 0x10221f000 - 0x102221ff7 +readline.cpython-36m-darwin.so (0) <8E54B15E-0710-3C0F-B948-1086AF68C050> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/readline.cpython-36m-darwin.so 0x102228000 - 0x102228ff7 +_bisect.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_bisect.cpython-36m-darwin.so 0x10222b000 - 0x10222cfff +_speedups.cpython-36m-darwin.so (???) <968062E4-6DA7-3142-BDF5-E5359A262DD8> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/markupsafe/_speedups.cpython-36m-darwin.so 0x10222f000 - 0x102230fff +_random.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_random.cpython-36m-darwin.so 0x102235000 - 0x1022c6eff dyld (750.5) <1F893B81-89A5-3502-8510-95B97B9F730D> /usr/lib/dyld 0x1023ba000 - 0x1023eaff7 +_lzma.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_lzma.cpython-36m-darwin.so 0x102434000 - 0x102488ff7 +libncursesw.5.dylib (0) <41392058-3FF5-324A-868F-F7657EC25039> /Library/Frameworks/Python.framework/Versions/3.6/lib/libncursesw.5.dylib 0x107164000 - 0x107166ff7 +_hashlib.cpython-36m-darwin.so (0) <7DD71177-B87A-3EBD-9742-BC29D1BB7352> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_hashlib.cpython-36m-darwin.so 0x10716b000 - 0x1071aeff7 +libssl.1.0.0.dylib (0) <8813DD21-7A83-36B8-97D8-CA86BD9C4D21> /Library/Frameworks/Python.framework/Versions/3.6/lib/libssl.1.0.0.dylib 0x1071ca000 - 0x10737b20f +libcrypto.1.0.0.dylib (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/libcrypto.1.0.0.dylib 0x1073f1000 - 0x1073f6ff7 +_blake2.cpython-36m-darwin.so (0) <70CAB140-4C26-31B8-88A9-B699DA1F1A55> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_blake2.cpython-36m-darwin.so 0x1073fb000 - 0x10740bff7 +_sha3.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_sha3.cpython-36m-darwin.so 0x1074d1000 - 0x107512fff +_decimal.cpython-36m-darwin.so (0) <9809BDA3-34CB-3BF7-AD11-96F6ECAFE1FB> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_decimal.cpython-36m-darwin.so 0x107571000 - 0x107645fff +unicodedata.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/unicodedata.cpython-36m-darwin.so 0x10769c000 - 0x1076a9fff +_datetime.cpython-36m-darwin.so (0) <432695CC-941A-36B8-ACB9-3AE713314FE9> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_datetime.cpython-36m-darwin.so 0x107799000 - 0x107799ff7 +_opcode.cpython-36m-darwin.so (0) <529AEBFD-5731-3662-AB4F-53E02258CE3B> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_opcode.cpython-36m-darwin.so 0x10781c000 - 0x10781ffff +binascii.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/binascii.cpython-36m-darwin.so 0x1078e3000 - 0x1078efff7 +_ssl.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_ssl.cpython-36m-darwin.so 0x107a9d000 - 0x107a9dff7 +_scproxy.cpython-36m-darwin.so (0) <9520405E-4460-3BC6-8036-97D82D89E6F5> /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_scproxy.cpython-36m-darwin.so 0x107b20000 - 0x107b30fff +_ctypes.cpython-36m-darwin.so (0) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_ctypes.cpython-36m-darwin.so 0x7fff27e08000 - 0x7fff27e17ff7 libSimplifiedChineseConverter.dylib (76) <3A38C5A2-0D75-34F2-A30C-22E346092611> /System/Library/CoreServices/Encodings/libSimplifiedChineseConverter.dylib 0x7fff30a43000 - 0x7fff30a43fff com.apple.Accelerate (1.11 - Accelerate 1.11) <8BE0965F-6A6A-35B0-89D0-F0A75835C2CA> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate 0x7fff30a5b000 - 0x7fff310b1fef com.apple.vImage (8.1 - 524.2) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage 0x7fff310b2000 - 0x7fff31319ff7 libBLAS.dylib (1303.60.1) <4E980D6B-4B3A-33D6-B52C-AFC7D120D11A> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib 0x7fff3131a000 - 0x7fff317edfef libBNNS.dylib (144.100.2) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib 0x7fff317ee000 - 0x7fff31b89fff libLAPACK.dylib (1303.60.1) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib 0x7fff31b8a000 - 0x7fff31b9ffec libLinearAlgebra.dylib (1303.60.1) <79CB28C5-F811-3EAF-AD8E-7D7D879FE662> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib 0x7fff31ba0000 - 0x7fff31ba5ff3 libQuadrature.dylib (7) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib 0x7fff31ba6000 - 0x7fff31c16fff libSparse.dylib (103) <8C55F5F2-6AE3-393C-B2FF-22B8CFCBD7FC> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib 0x7fff31c17000 - 0x7fff31c29fef libSparseBLAS.dylib (1303.60.1) <08F6D629-5DAC-3A99-B261-2B6095DD38B4> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib 0x7fff31c2a000 - 0x7fff31e01fd7 libvDSP.dylib (735.100.4) <0744F29B-F822-3571-9B4A-B592146D4E03> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib 0x7fff31e02000 - 0x7fff31ec4fef libvMisc.dylib (735.100.4) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib 0x7fff31ec5000 - 0x7fff31ec5fff com.apple.Accelerate.vecLib (3.11 - vecLib 3.11) <66282197-81EE-316F-978E-EF1471551DEF> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib 0x7fff33626000 - 0x7fff339b4ffd com.apple.CFNetwork (1125.2 - 1125.2) <1D4D81F7-FC48-3588-87FC-481E2586E345> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork 0x7fff34daf000 - 0x7fff3522effb com.apple.CoreFoundation (6.9 - 1675.129) <9E632A1E-9622-33D6-BCCE-23AC16DAA6B7> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 0x7fff36197000 - 0x7fff36197fff com.apple.CoreServices (1069.22 - 1069.22) <888FE7B9-CE6C-3C7C-BA33-63364462228A> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices 0x7fff36198000 - 0x7fff3621dfff com.apple.AE (838.1 - 838.1) <2BAB1B88-C198-3D20-8DA3-056E66510E7A> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE 0x7fff3621e000 - 0x7fff364ffff7 com.apple.CoreServices.CarbonCore (1217 - 1217) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore 0x7fff36500000 - 0x7fff3654dffd com.apple.DictionaryServices (1.2 - 323.6) <11513ED9-8B4B-39BB-A6B2-AA6AA0A2DF72> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices 0x7fff3654e000 - 0x7fff36556ff7 com.apple.CoreServices.FSEvents (1268.100.1 - 1268.100.1) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents 0x7fff36557000 - 0x7fff36790ffc com.apple.LaunchServices (1069.22 - 1069.22) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices 0x7fff36791000 - 0x7fff36829ff1 com.apple.Metadata (10.7.0 - 2076.3) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata 0x7fff3682a000 - 0x7fff36857fff com.apple.CoreServices.OSServices (1069.22 - 1069.22) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices 0x7fff36858000 - 0x7fff368bffff com.apple.SearchKit (1.4.1 - 1.4.1) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit 0x7fff368c0000 - 0x7fff368e4ff5 com.apple.coreservices.SharedFileList (131.4 - 131.4) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList 0x7fff3712a000 - 0x7fff37130fff com.apple.DiskArbitration (2.7 - 2.7) /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration 0x7fff37465000 - 0x7fff3782aff8 com.apple.Foundation (6.9 - 1675.129) <9A74FA97-7F7B-3929-B381-D9514B1E4754> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation 0x7fff37b9e000 - 0x7fff37c42ff3 com.apple.framework.IOKit (2.0.2 - 1726.100.16) <3D8BA34A-AAF7-3AF2-9B5B-189AC4755404> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit 0x7fff3b741000 - 0x7fff3b74dffe com.apple.NetFS (6.0 - 4.0) <7A96A8FE-17F3-3850-8E81-9DDDC5A48DDB> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS 0x7fff3e32f000 - 0x7fff3e34bfff com.apple.CFOpenDirectory (10.15 - 220.40.1) <58835104-9E7A-32E8-862B-530CE899C9B4> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory 0x7fff3e34c000 - 0x7fff3e357ffd com.apple.OpenDirectory (10.15 - 220.40.1) /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory 0x7fff416f1000 - 0x7fff41a3aff1 com.apple.security (7.0 - 59306.101.1) <430E04FE-F068-3476-9CA2-72CB5F040D1F> /System/Library/Frameworks/Security.framework/Versions/A/Security 0x7fff41a3b000 - 0x7fff41ac3ffb com.apple.securityfoundation (6.0 - 55236.60.1) /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation 0x7fff41af2000 - 0x7fff41af6ff8 com.apple.xpc.ServiceManagement (1.0 - 1) /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement 0x7fff427a1000 - 0x7fff4280fff7 com.apple.SystemConfiguration (1.19 - 1.19) <71AC15DE-7018-3D2B-B599-F2972F0288AE> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration 0x7fff4676c000 - 0x7fff46831ff7 com.apple.APFS (1412.101.1 - 1412.101.1) <2F5A48FB-9788-3A24-87FE-C1B7DDBC8A07> /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS 0x7fff48533000 - 0x7fff48542fd7 com.apple.AppleFSCompression (119.100.1 - 1.0) /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression 0x7fff49d01000 - 0x7fff49d0aff7 com.apple.coreservices.BackgroundTaskManagement (1.0 - 104) <2088BC70-5329-3390-A851-C4ECF654047C> /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement 0x7fff4cac0000 - 0x7fff4cad0ff3 com.apple.CoreEmoji (1.0 - 107) /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji 0x7fff4d110000 - 0x7fff4d17aff0 com.apple.CoreNLP (1.0 - 213) <687A4C31-A307-3255-83BE-9B123971FF62> /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP 0x7fff4dff5000 - 0x7fff4e023ffd com.apple.CSStore (1069.22 - 1069.22) <39E431F9-3584-34DF-A64D-C5895AA72068> /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore 0x7fff5a238000 - 0x7fff5a306ffd com.apple.LanguageModeling (1.0 - 215.1) <3FAF1700-F7D4-3F92-88AA-A3920702B8BB> /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling 0x7fff5a307000 - 0x7fff5a34ffff com.apple.Lexicon-framework (1.0 - 72) <212D02CE-11BC-3C7F-BDFD-DF1A0C4017EE> /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon 0x7fff5a356000 - 0x7fff5a35bff3 com.apple.LinguisticData (1.0 - 353.18) /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData 0x7fff5b6c2000 - 0x7fff5b70efff com.apple.spotlight.metadata.utilities (1.0 - 2076.3) /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities 0x7fff5c1c3000 - 0x7fff5c1cdfff com.apple.NetAuth (6.2 - 6.2) /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth 0x7fff6542d000 - 0x7fff6543dff3 com.apple.TCC (1.0 - 1) /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC 0x7fff68b08000 - 0x7fff68b0aff3 com.apple.loginsupport (1.0 - 1) /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport 0x7fff6b623000 - 0x7fff6b657fff libCRFSuite.dylib (48) /usr/lib/libCRFSuite.dylib 0x7fff6b65a000 - 0x7fff6b664fff libChineseTokenizer.dylib (34) /usr/lib/libChineseTokenizer.dylib 0x7fff6b6f0000 - 0x7fff6b6f2ff7 libDiagnosticMessagesClient.dylib (112) /usr/lib/libDiagnosticMessagesClient.dylib 0x7fff6bbc6000 - 0x7fff6bbc7fff libSystem.B.dylib (1281.100.1) /usr/lib/libSystem.B.dylib 0x7fff6bc54000 - 0x7fff6bc55fff libThaiTokenizer.dylib (3) /usr/lib/libThaiTokenizer.dylib 0x7fff6bc6d000 - 0x7fff6bc83fff libapple_nghttp2.dylib (1.39.2) <268F4E3E-95DC-35FB-82DC-5B0D1855A676> /usr/lib/libapple_nghttp2.dylib 0x7fff6bcb8000 - 0x7fff6bd2aff7 libarchive.2.dylib (72.100.1) <65E0870E-02AB-365D-84F9-5800B5BB69FC> /usr/lib/libarchive.2.dylib 0x7fff6bdc8000 - 0x7fff6bdc8ff3 libauto.dylib (187) /usr/lib/libauto.dylib 0x7fff6be8e000 - 0x7fff6be9effb libbsm.0.dylib (60.100.1) /usr/lib/libbsm.0.dylib 0x7fff6be9f000 - 0x7fff6beabfff libbz2.1.0.dylib (44) /usr/lib/libbz2.1.0.dylib 0x7fff6beac000 - 0x7fff6befefff libc++.1.dylib (902.1) <08199809-33CA-321E-9B9D-FD5B2BC64580> /usr/lib/libc++.1.dylib 0x7fff6beff000 - 0x7fff6bf14ffb libc++abi.dylib (902) <1C880020-396D-3F91-BE27-5A09A9239F68> /usr/lib/libc++abi.dylib 0x7fff6bf15000 - 0x7fff6bf15fff libcharset.1.dylib (59) <4E63BA25-04A3-329A-923D-251155C03F30> /usr/lib/libcharset.1.dylib 0x7fff6bf16000 - 0x7fff6bf27fff libcmph.dylib (8) /usr/lib/libcmph.dylib 0x7fff6bf28000 - 0x7fff6bf3ffd7 libcompression.dylib (87) <7F258A06-E01D-32D2-9CD2-6B2931DA5DA7> /usr/lib/libcompression.dylib 0x7fff6c219000 - 0x7fff6c22fff7 libcoretls.dylib (167) /usr/lib/libcoretls.dylib 0x7fff6c230000 - 0x7fff6c231fff libcoretls_cfhelpers.dylib (167) <2E542A2B-7730-33EE-9B3B-154B08608AA6> /usr/lib/libcoretls_cfhelpers.dylib 0x7fff6c93b000 - 0x7fff6c958fff libedit.3.dylib (55) /usr/lib/libedit.3.dylib 0x7fff6c959000 - 0x7fff6c959fff libenergytrace.dylib (21) /usr/lib/libenergytrace.dylib 0x7fff6c980000 - 0x7fff6c982fff libfakelink.dylib (149.1) /usr/lib/libfakelink.dylib 0x7fff6c991000 - 0x7fff6c996fff libgermantok.dylib (24) <8091F952-B592-38E3-982B-7DEA0A44E211> /usr/lib/libgermantok.dylib 0x7fff6c9a1000 - 0x7fff6ca91fff libiconv.2.dylib (59) <9458704B-A702-37CB-9707-66ABBB5DB71E> /usr/lib/libiconv.2.dylib 0x7fff6ca92000 - 0x7fff6cce9fff libicucore.A.dylib (64260.0.1) /usr/lib/libicucore.A.dylib 0x7fff6cd03000 - 0x7fff6cd04fff liblangid.dylib (133) /usr/lib/liblangid.dylib 0x7fff6cd05000 - 0x7fff6cd1dff3 liblzma.5.dylib (16) <0AA1EB11-A433-327E-B8DB-7395CFF06554> /usr/lib/liblzma.5.dylib 0x7fff6cd35000 - 0x7fff6cddcff7 libmecab.dylib (883.10) <13136C11-8763-37BA-AEB2-676092798DAA> /usr/lib/libmecab.dylib 0x7fff6cddd000 - 0x7fff6d03ffe1 libmecabra.dylib (883.10) <6AC22857-F528-35CE-94A9-D70F6F766C15> /usr/lib/libmecabra.dylib 0x7fff6d3ac000 - 0x7fff6d3dbfff libncurses.5.4.dylib (57) <6BD6F430-C8B3-39D8-87B5-2C16E6578FD5> /usr/lib/libncurses.5.4.dylib 0x7fff6d50b000 - 0x7fff6d986ff5 libnetwork.dylib (1880.100.30) <9519B6F8-44E2-3F53-B995-1527C5333240> /usr/lib/libnetwork.dylib 0x7fff6da26000 - 0x7fff6da59fde libobjc.A.dylib (787.1) <20AC082F-2DB7-3974-A2D4-8C5E01787584> /usr/lib/libobjc.A.dylib 0x7fff6da6c000 - 0x7fff6da70fff libpam.2.dylib (25.100.1) /usr/lib/libpam.2.dylib 0x7fff6da73000 - 0x7fff6daa9ff7 libpcap.A.dylib (89.100.1) <171BAAB0-A5C8-32C5-878E-83D46073BF8C> /usr/lib/libpcap.A.dylib 0x7fff6dba1000 - 0x7fff6dd8bff7 libsqlite3.dylib (308.4) /usr/lib/libsqlite3.dylib 0x7fff6dfdc000 - 0x7fff6dfdfffb libutil.dylib (57) <07ED7CF0-1744-3386-B8B2-0DDBD446999E> /usr/lib/libutil.dylib 0x7fff6dfe0000 - 0x7fff6dfedff7 libxar.1.dylib (425.2) <625F24E1-1A0F-3301-9F99-F0F3DADE0287> /usr/lib/libxar.1.dylib 0x7fff6dff3000 - 0x7fff6e0d5ff7 libxml2.2.dylib (33.3) <24147A90-E3EB-3926-BFB0-5F0FC9F706E2> /usr/lib/libxml2.2.dylib 0x7fff6e0d9000 - 0x7fff6e101fff libxslt.1.dylib (16.9) <8C8648B1-F2CA-38EA-A409-D6F19715C6E6> /usr/lib/libxslt.1.dylib 0x7fff6e102000 - 0x7fff6e114ff3 libz.1.dylib (76) <6A449C6A-DF88-36C1-8F2D-DB9A808263B5> /usr/lib/libz.1.dylib 0x7fff6e9c2000 - 0x7fff6e9c7ff3 libcache.dylib (83) <5F90FFCE-403B-3724-991D-BA32401D99C5> /usr/lib/system/libcache.dylib 0x7fff6e9c8000 - 0x7fff6e9d3fff libcommonCrypto.dylib (60165) /usr/lib/system/libcommonCrypto.dylib 0x7fff6e9d4000 - 0x7fff6e9dbfff libcompiler_rt.dylib (101.2) /usr/lib/system/libcompiler_rt.dylib 0x7fff6e9dc000 - 0x7fff6e9e5ff7 libcopyfile.dylib (166.40.1) <1A5270B5-0D97-35DA-9296-4F4A428BC6A2> /usr/lib/system/libcopyfile.dylib 0x7fff6e9e6000 - 0x7fff6ea78fe3 libcorecrypto.dylib (866.100.30) /usr/lib/system/libcorecrypto.dylib 0x7fff6eb85000 - 0x7fff6ebc5ff0 libdispatch.dylib (1173.100.2) /usr/lib/system/libdispatch.dylib 0x7fff6ebc6000 - 0x7fff6ebfcfff libdyld.dylib (750.5) /usr/lib/system/libdyld.dylib 0x7fff6ebfd000 - 0x7fff6ebfdffb libkeymgr.dylib (30) /usr/lib/system/libkeymgr.dylib 0x7fff6ebfe000 - 0x7fff6ec0aff3 libkxld.dylib (6153.101.6) <77282DCB-83D6-3199-874E-9A4A0FD7D4F3> /usr/lib/system/libkxld.dylib 0x7fff6ec0b000 - 0x7fff6ec0bff7 liblaunch.dylib (1738.100.39) /usr/lib/system/liblaunch.dylib 0x7fff6ec0c000 - 0x7fff6ec11ff7 libmacho.dylib (959.0.1) /usr/lib/system/libmacho.dylib 0x7fff6ec12000 - 0x7fff6ec14ff3 libquarantine.dylib (110.40.3) <51E0304F-AB11-3BF7-99DC-BB916CC9088B> /usr/lib/system/libquarantine.dylib 0x7fff6ec15000 - 0x7fff6ec16ff7 libremovefile.dylib (48) <078F29AB-26BA-3493-BCAA-E1E75A187521> /usr/lib/system/libremovefile.dylib 0x7fff6ec17000 - 0x7fff6ec2eff3 libsystem_asl.dylib (377.60.2) <0F1BAC19-2AE0-3F8E-9B90-AACF819B2BF7> /usr/lib/system/libsystem_asl.dylib 0x7fff6ec2f000 - 0x7fff6ec2fff7 libsystem_blocks.dylib (74) <32224AFF-C06F-3279-B753-097194EDEF49> /usr/lib/system/libsystem_blocks.dylib 0x7fff6ec30000 - 0x7fff6ecb7fff libsystem_c.dylib (1353.100.2) <4F5EED22-4D46-3F04-8C64-C492CDAD70EB> /usr/lib/system/libsystem_c.dylib 0x7fff6ecb8000 - 0x7fff6ecbbffb libsystem_configuration.dylib (1061.101.1) <2A2C778D-07EB-35C7-A954-8BF8FD74BD75> /usr/lib/system/libsystem_configuration.dylib 0x7fff6ecbc000 - 0x7fff6ecbffff libsystem_coreservices.dylib (114) /usr/lib/system/libsystem_coreservices.dylib 0x7fff6ecc0000 - 0x7fff6ecc8fff libsystem_darwin.dylib (1353.100.2) /usr/lib/system/libsystem_darwin.dylib 0x7fff6ecc9000 - 0x7fff6ecd0fff libsystem_dnssd.dylib (1096.100.3) <7C690DF5-E119-33FB-85CD-9EFC67A36E40> /usr/lib/system/libsystem_dnssd.dylib 0x7fff6ecd1000 - 0x7fff6ecd2ffb libsystem_featureflags.dylib (17) <415D83EF-084C-3485-B757-53001870EA94> /usr/lib/system/libsystem_featureflags.dylib 0x7fff6ecd3000 - 0x7fff6ed20ff7 libsystem_info.dylib (538) <17049D3F-C798-3651-B391-1551FC699D3E> /usr/lib/system/libsystem_info.dylib 0x7fff6ed21000 - 0x7fff6ed4dff7 libsystem_kernel.dylib (6153.101.6) /usr/lib/system/libsystem_kernel.dylib 0x7fff6ed4e000 - 0x7fff6ed95fff libsystem_m.dylib (3178) <74741FA8-5C29-3241-9046-4FC91C6A6D4A> /usr/lib/system/libsystem_m.dylib 0x7fff6ed96000 - 0x7fff6edbdfff libsystem_malloc.dylib (283.100.5) <97833239-2F83-3AEB-A426-0593997C8A54> /usr/lib/system/libsystem_malloc.dylib 0x7fff6edbe000 - 0x7fff6edcbffb libsystem_networkextension.dylib (1095.100.29) /usr/lib/system/libsystem_networkextension.dylib 0x7fff6edcc000 - 0x7fff6edd5ff7 libsystem_notify.dylib (241.100.2) /usr/lib/system/libsystem_notify.dylib 0x7fff6edd6000 - 0x7fff6eddefef libsystem_platform.dylib (220.100.1) <6EF12F34-C33F-36BF-9A9A-2A35EA19EFE0> /usr/lib/system/libsystem_platform.dylib 0x7fff6eddf000 - 0x7fff6ede9fff libsystem_pthread.dylib (416.100.3) /usr/lib/system/libsystem_pthread.dylib 0x7fff6edea000 - 0x7fff6edeeff3 libsystem_sandbox.dylib (1217.101.2) /usr/lib/system/libsystem_sandbox.dylib 0x7fff6edef000 - 0x7fff6edf1fff libsystem_secinit.dylib (62.100.2) /usr/lib/system/libsystem_secinit.dylib 0x7fff6edf2000 - 0x7fff6edf9ffb libsystem_symptoms.dylib (1238.100.26) <487B92DE-45F9-39F9-A478-89BBD478157D> /usr/lib/system/libsystem_symptoms.dylib 0x7fff6edfa000 - 0x7fff6ee10ff2 libsystem_trace.dylib (1147.100.8) /usr/lib/system/libsystem_trace.dylib 0x7fff6ee12000 - 0x7fff6ee17ff7 libunwind.dylib (35.4) /usr/lib/system/libunwind.dylib 0x7fff6ee18000 - 0x7fff6ee4dffe libxpc.dylib (1738.100.39) <32B0E31E-9DA3-328B-A962-BC9591B93537> /usr/lib/system/libxpc.dylib

    External Modification Summary: Calls made by other processes targeting this process: task_for_pid: 1 thread_create: 0 thread_set_state: 0 Calls made by this process: task_for_pid: 0 thread_create: 0 thread_set_state: 0 Calls made by all processes on this machine: task_for_pid: 252705 thread_create: 0 thread_set_state: 0

    VM Region Summary: ReadOnly portion of Libraries: Total=463.9M resident=0K(0%) swapped_out_or_unallocated=463.9M(100%) Writable regions: Total=152.8M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=152.8M(100%)

                                VIRTUAL   REGION 
    

    REGION TYPE SIZE COUNT (non-coalesced) =========== ======= ======= Kernel Alloc Once 8K 1 MALLOC 49.9M 73 MALLOC guard page 16K 4 MALLOC_LARGE (reserved) 76.5M 3 reserved VM address space (unallocated) STACK GUARD 12K 3 Stack 26.0M 4 VM_ALLOCATE 4K 1 __DATA 7037K 158 __DATA_CONST 20K 1 __LINKEDIT 389.6M 37 __OBJC_RO 32.2M 1 __OBJC_RW 1892K 2 __TEXT 74.3M 156 __UNICODE 564K 1 shared memory 12K 3 =========== ======= ======= TOTAL 657.9M 448 TOTAL, minus reserved VM space 581.4M 448

    Model: MacBookPro14,1, BootROM 205.0.0.0.0, 2 processors, Dual-Core Intel Core i5, 2.3 GHz, 8 GB, SMC 2.43f7 Graphics: kHW_IntelIrisGraphics640Item, Intel Iris Plus Graphics 640, spdisplays_builtin Memory Module: BANK 0/DIMM0, 4 GB, LPDDR3, 2133 MHz, 0x80AD, 0x483943434E4E4E424A54414C41522D4E5644 Memory Module: BANK 1/DIMM0, 4 GB, LPDDR3, 2133 MHz, 0x80AD, 0x483943434E4E4E424A54414C41522D4E5644 AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x170), Broadcom BCM43xx 1.0 (7.77.111.1 AirPortDriverBrcmNIC-1600.4) Bluetooth: Version 7.0.4f6, 3 services, 27 devices, 1 incoming serial ports Network Service: Wi-Fi, AirPort, en0 USB Device: USB 3.0 Bus Thunderbolt Bus: MacBook Pro, Apple Inc., 41.4

    bug 
    opened by miniyk2012 9
  • Thread names with quotes and newlines cause JSON decode errors in report_builder.py:get_json

    Thread names with quotes and newlines cause JSON decode errors in report_builder.py:get_json

    Some of my threads are named with a file name and have newlines, e.g., {"ph":"M","pid":23061,"tid":23060,"name":"thread_name","args":{"name":" File "./something/otherthing.py", line 123, in exec_func_slaves pool = concurrency.ThreadPool(max_workers=min(num_workers, concurrency.THREAD_POOL_SIZE_MEDIUM)) _0"}}

    I worked around this by fixing up the json_str at report_builder.py:29 for my particular data.

    bug 
    opened by jtkouz 1
  • Make vizviewer test more stable on Mac on github actions

    Make vizviewer test more stable on Mac on github actions

    Now vizviewer test sometimes fails on nightly validations(example). It's not a real failure, just the port is somehow occupied. As vizviewer does support custom ports, we can maybe check if the port works first, then try to test on it, which will reduce the fake positives in nightly validation.

    good first issue deficiency 
    opened by gaogaotiantian 8
  • Installation failed on Mac OS Monterey M1 Chip

    Installation failed on Mac OS Monterey M1 Chip

    I tried to install viztracer using pip install viztracer but it failed yielding the following error. I also have gcc installed in my system.

    image
    Collecting viztracer
      Using cached viztracer-0.15.3.tar.gz (8.9 MB)
      Preparing metadata (setup.py) ... done
    Requirement already satisfied: objprint>=0.1.3 in /Users/abdullahalimran/opt/miniforge3/envs/test/lib/python3.8/site-packages (from viztracer) (0.2.2)
    Building wheels for collected packages: viztracer
      Building wheel for viztracer (setup.py) ... error
      ERROR: Command errored out with exit status 1:
       command: /Users/abdullahalimran/opt/miniforge3/envs/test/bin/python3.8 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/sy/5gyrfs415dnbjfyt7xgjdhj00000gn/T/pip-install-7htfqewb/viztracer_ca1d85fcb0b042e88c496dcb89cf340f/setup.py'"'"'; __file__='"'"'/private/var/folders/sy/5gyrfs415dnbjfyt7xgjdhj00000gn/T/pip-install-7htfqewb/viztracer_ca1d85fcb0b042e88c496dcb89cf340f/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/sy/5gyrfs415dnbjfyt7xgjdhj00000gn/T/pip-wheel-ug1q7ob0
           cwd: /private/var/folders/sy/5gyrfs415dnbjfyt7xgjdhj00000gn/T/pip-install-7htfqewb/viztracer_ca1d85fcb0b042e88c496dcb89cf340f/
      Complete output (109 lines):
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-11.0-arm64-3.8
      creating build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/report_builder.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/patch.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/viewer.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/vizevent.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/vizplugin.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/util.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/decorator.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/attach.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/viztracer.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/__init__.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/vizcounter.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/functree.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/vizlogging.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/vizobject.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/flamegraph.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/simulator.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/cellmagic.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/prog_snapshot.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/event_base.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/main.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/__main__.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/tracer.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      copying src/viztracer/code_monkey.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
      creating build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process
      copying src/viztracer/attach_process/add_code_to_python_process.py -> build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process
      copying src/viztracer/attach_process/__init__.py -> build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process
      creating build/lib.macosx-11.0-arm64-3.8/viztracer/html
      copying src/viztracer/html/flamegraph.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/html
      copying src/viztracer/html/trace_viewer_embedder.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/html
      copying src/viztracer/html/trace_viewer_full.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/html
      creating build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
      copying src/viztracer/web_dist/index.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
      copying src/viztracer/web_dist/LICENSE -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
      copying src/viztracer/web_dist/trace_processor -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
      copying src/viztracer/web_dist/service_worker.js.map -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
      copying src/viztracer/web_dist/service_worker.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
      creating build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/index.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/controller_bundle.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/engine_bundle.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/traceconv_bundle.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/trace_to_text.wasm -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/controller_bundle.js.map -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/traceconv_bundle.js.map -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/trace_processor.wasm -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/frontend_bundle.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/frontend_bundle.js.map -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/perfetto.css -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/manifest.json -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/engine_bundle.js.map -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
      creating build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/logo-128.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_lmk.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_cpu_voltage.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_ftrace.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/RobotoMono-Regular.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_syscalls.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_one_shot.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_atrace.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Roboto-500.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Raleway-Thin.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_long_trace.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/catapult_trace_viewer.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Roboto-400.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_board_voltage.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/RobotoCondensed-Regular.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_ps_stats.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_battery_counters.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_mem_hifreq.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/MaterialIcons.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/favicon.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Roboto-100.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_native_heap_profiler.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_cpu_fine.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/RobotoCondensed-Light.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_frame_timeline.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/catapult_trace_viewer.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_vmstat.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_gpu_mem_total.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/logo-3d.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_java_heap_dump.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_logcat.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_meminfo.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_cpu_coarse.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Raleway-Regular.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_cpu_freq.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/brand.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Roboto-300.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_ring_buf.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
      copying src/viztracer/attach_process/LICENSE -> build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process
      copying src/viztracer/attach_process/attach_x86_64.dylib -> build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process
      creating build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process/linux_and_mac
      copying src/viztracer/attach_process/linux_and_mac/lldb_prepare.py -> build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process/linux_and_mac
      running build_ext
      building 'viztracer.snaptrace' extension
      creating build/temp.macosx-11.0-arm64-3.8
      creating build/temp.macosx-11.0-arm64-3.8/src
      creating build/temp.macosx-11.0-arm64-3.8/src/viztracer
      creating build/temp.macosx-11.0-arm64-3.8/src/viztracer/modules
      gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/abdullahalimran/opt/miniforge3/envs/test/include -arch arm64 -I/Users/abdullahalimran/opt/miniforge3/envs/test/include -arch arm64 -I/Users/abdullahalimran/opt/miniforge3/envs/test/include/python3.8 -c src/viztracer/modules/util.c -o build/temp.macosx-11.0-arm64-3.8/src/viztracer/modules/util.o -Werror -std=c99
      gcc: fatal error: cannot execute 'cc1': execvp: No such file or directory
      compilation terminated.
      error: command 'gcc' failed with exit status 1
      ----------------------------------------
      ERROR: Failed building wheel for viztracer
      Running setup.py clean for viztracer
    Failed to build viztracer
    Installing collected packages: viztracer
        Running setup.py install for viztracer ... error
        ERROR: Command errored out with exit status 1:
         command: /Users/abdullahalimran/opt/miniforge3/envs/test/bin/python3.8 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/sy/5gyrfs415dnbjfyt7xgjdhj00000gn/T/pip-install-7htfqewb/viztracer_ca1d85fcb0b042e88c496dcb89cf340f/setup.py'"'"'; __file__='"'"'/private/var/folders/sy/5gyrfs415dnbjfyt7xgjdhj00000gn/T/pip-install-7htfqewb/viztracer_ca1d85fcb0b042e88c496dcb89cf340f/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/sy/5gyrfs415dnbjfyt7xgjdhj00000gn/T/pip-record-f8l4fizf/install-record.txt --single-version-externally-managed --compile --install-headers /Users/abdullahalimran/opt/miniforge3/envs/test/include/python3.8/viztracer
             cwd: /private/var/folders/sy/5gyrfs415dnbjfyt7xgjdhj00000gn/T/pip-install-7htfqewb/viztracer_ca1d85fcb0b042e88c496dcb89cf340f/
        Complete output (111 lines):
        running install
        /Users/abdullahalimran/opt/miniforge3/envs/test/lib/python3.8/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
          warnings.warn(
        running build
        running build_py
        creating build
        creating build/lib.macosx-11.0-arm64-3.8
        creating build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/report_builder.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/patch.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/viewer.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/vizevent.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/vizplugin.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/util.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/decorator.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/attach.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/viztracer.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/__init__.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/vizcounter.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/functree.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/vizlogging.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/vizobject.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/flamegraph.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/simulator.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/cellmagic.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/prog_snapshot.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/event_base.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/main.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/__main__.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/tracer.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        copying src/viztracer/code_monkey.py -> build/lib.macosx-11.0-arm64-3.8/viztracer
        creating build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process
        copying src/viztracer/attach_process/add_code_to_python_process.py -> build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process
        copying src/viztracer/attach_process/__init__.py -> build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process
        creating build/lib.macosx-11.0-arm64-3.8/viztracer/html
        copying src/viztracer/html/flamegraph.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/html
        copying src/viztracer/html/trace_viewer_embedder.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/html
        copying src/viztracer/html/trace_viewer_full.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/html
        creating build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
        copying src/viztracer/web_dist/index.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
        copying src/viztracer/web_dist/LICENSE -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
        copying src/viztracer/web_dist/trace_processor -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
        copying src/viztracer/web_dist/service_worker.js.map -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
        copying src/viztracer/web_dist/service_worker.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist
        creating build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/index.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/controller_bundle.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/engine_bundle.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/traceconv_bundle.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/trace_to_text.wasm -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/controller_bundle.js.map -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/traceconv_bundle.js.map -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/trace_processor.wasm -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/frontend_bundle.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/frontend_bundle.js.map -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/perfetto.css -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/manifest.json -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/engine_bundle.js.map -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7
        creating build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/logo-128.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_lmk.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_cpu_voltage.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_ftrace.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/RobotoMono-Regular.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_syscalls.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_one_shot.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_atrace.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Roboto-500.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Raleway-Thin.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_long_trace.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/catapult_trace_viewer.js -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Roboto-400.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_board_voltage.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/RobotoCondensed-Regular.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_ps_stats.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_battery_counters.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_mem_hifreq.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/MaterialIcons.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/favicon.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Roboto-100.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_native_heap_profiler.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_cpu_fine.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/RobotoCondensed-Light.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_frame_timeline.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/catapult_trace_viewer.html -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_vmstat.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_gpu_mem_total.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/logo-3d.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_java_heap_dump.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_logcat.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_meminfo.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_cpu_coarse.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Raleway-Regular.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_cpu_freq.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/brand.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/Roboto-300.woff2 -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/web_dist/v25.0-cca3e0ce7/assets/rec_ring_buf.png -> build/lib.macosx-11.0-arm64-3.8/viztracer/web_dist/v25.0-cca3e0ce7/assets
        copying src/viztracer/attach_process/LICENSE -> build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process
        copying src/viztracer/attach_process/attach_x86_64.dylib -> build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process
        creating build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process/linux_and_mac
        copying src/viztracer/attach_process/linux_and_mac/lldb_prepare.py -> build/lib.macosx-11.0-arm64-3.8/viztracer/attach_process/linux_and_mac
        running build_ext
        building 'viztracer.snaptrace' extension
        creating build/temp.macosx-11.0-arm64-3.8
        creating build/temp.macosx-11.0-arm64-3.8/src
        creating build/temp.macosx-11.0-arm64-3.8/src/viztracer
        creating build/temp.macosx-11.0-arm64-3.8/src/viztracer/modules
        gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/abdullahalimran/opt/miniforge3/envs/test/include -arch arm64 -I/Users/abdullahalimran/opt/miniforge3/envs/test/include -arch arm64 -I/Users/abdullahalimran/opt/miniforge3/envs/test/include/python3.8 -c src/viztracer/modules/util.c -o build/temp.macosx-11.0-arm64-3.8/src/viztracer/modules/util.o -Werror -std=c99
        gcc: fatal error: cannot execute 'cc1': execvp: No such file or directory
        compilation terminated.
        error: command 'gcc' failed with exit status 1
        ----------------------------------------
    ERROR: Command errored out with exit status 1: /Users/abdullahalimran/opt/miniforge3/envs/test/bin/python3.8 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/sy/5gyrfs415dnbjfyt7xgjdhj00000gn/T/pip-install-7htfqewb/viztracer_ca1d85fcb0b042e88c496dcb89cf340f/setup.py'"'"'; __file__='"'"'/private/var/folders/sy/5gyrfs415dnbjfyt7xgjdhj00000gn/T/pip-install-7htfqewb/viztracer_ca1d85fcb0b042e88c496dcb89cf340f/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/sy/5gyrfs415dnbjfyt7xgjdhj00000gn/T/pip-record-f8l4fizf/install-record.txt --single-version-externally-managed --compile --install-headers /Users/abdullahalimran/opt/miniforge3/envs/test/include/python3.8/viztracer Check the logs for full command output.
    
    opened by abdalimran 2
  • Write a compressor/decompressor for the trace log file

    Write a compressor/decompressor for the trace log file

    Now the trace log file is huge, which is okay on local machines. However, it makes it difficult to share the trace file through network, or to store it somewhere in the cloud.

    Most of the info in the trace file is duplicated and we should be able to get a very decent compress ratio for the trace file.

    enhancement 
    opened by gaogaotiantian 17
  • multiprocessing.Pool related tests occasionally fail in github actions

    multiprocessing.Pool related tests occasionally fail in github actions

    For now, they are:

    • tests.test_multiprocess.TestMultiprocessing.test_multiprocess_pool
    • tests.test_regression.TestIssue58.test_issue58

    I can't reproduce this locally. It's probably a racing issue somewhere. We have not gotten any bug report from the users yet and I've put some efforts in fixing it but failed(I think I improved it a bit).

    Anyone is welcome to give it another try, but if you found your tests failed on these tests, it's okay, that's not introduced by your changes.

    unstable-test 
    opened by gaogaotiantian 0
Releases(0.15.4)
Owner
Author of VizTracer, watchpoints and objprint
null
Trace any Python program, anywhere!

lptrace lptrace is strace for Python programs. It lets you see in real-time what functions a Python program is running. It's particularly useful to de

Karim Hamidou 686 Sep 18, 2022
Trace all method entries and exits, the exit also prints the return value, if it is of basic type

Trace all method entries and exits, the exit also prints the return value, if it is of basic type. The apk must have set the android:debuggable="true" flag.

Kurt Nistelberger 7 Aug 10, 2022
(OLD REPO) Line-by-line profiling for Python - Current repo ->

line_profiler and kernprof line_profiler is a module for doing line-by-line profiling of functions. kernprof is a convenient script for running either

Robert Kern 3.6k Sep 24, 2022
Silky smooth profiling for Django

Silk Silk is a live profiling and inspection tool for the Django framework. Silk intercepts and stores HTTP requests and database queries before prese

Jazzband 3.5k Sep 24, 2022
A package containing a lot of useful utilities for Python developing and debugging.

Vpack A package containing a lot of useful utilities for Python developing and debugging. Features Sigview: press Ctrl+C to print the current stack in

volltin 16 Aug 18, 2022
Debugging manhole for python applications.

Overview docs tests package Manhole is in-process service that will accept unix domain socket connections and present the stacktraces for all threads

Ionel Cristian Mărieș 332 Aug 24, 2022
A powerful set of Python debugging tools, based on PySnooper

snoop snoop is a powerful set of Python debugging tools. It's primarily meant to be a more featureful and refined version of PySnooper. It also includ

Alex Hall 812 Sep 23, 2022
Cyberbrain: Python debugging, redefined.

Cyberbrain1(电子脑) aims to free programmers from debugging.

laike9m 2.3k Sep 28, 2022
A web-based visualization and debugging platform for NuPIC

Cerebro 2 A web-based visualization and debugging platform for NuPIC. Usage Set up cerebro2.server to export your model state. Then, run: cd static py

Numenta 24 Oct 13, 2021
A toolbar overlay for debugging Flask applications

Flask Debug-toolbar This is a port of the excellent django-debug-toolbar for Flask applications. Installation Installing is simple with pip: $ pip ins

null 847 Sep 25, 2022
Never use print for debugging again

PySnooper - Never use print for debugging again PySnooper is a poor man's debugger. If you've used Bash, it's like set -x for Python, except it's fanc

Ram Rachum 15.2k Sep 26, 2022
Hypothesis debugging with vscode

Hypothesis debugging with vscode

Oliver Mannion 0 Feb 9, 2022
The official code of LM-Debugger, an interactive tool for inspection and intervention in transformer-based language models.

LM-Debugger is an open-source interactive tool for inspection and intervention in transformer-based language models. This repository includes the code

Mor Geva 96 Sep 19, 2022
PINCE is a front-end/reverse engineering tool for the GNU Project Debugger (GDB), focused on games.

PINCE is a front-end/reverse engineering tool for the GNU Project Debugger (GDB), focused on games. However, it can be used for any reverse-engi

Korcan Karaokçu 1.4k Oct 4, 2022
Debugger capable of attaching to and injecting code into python processes.

DISCLAIMER: This is not an official google project, this is just something I wrote while at Google. Pyringe What this is Pyringe is a python debugger

Google 1.6k Sep 23, 2022
Monitor Memory usage of Python code

Memory Profiler This is a python module for monitoring memory consumption of a process as well as line-by-line analysis of memory consumption for pyth

Fabian Pedregosa 79 Sep 28, 2022
Inject code into running Python processes

pyrasite Tools for injecting arbitrary code into running Python processes. homepage: http://pyrasite.com documentation: http://pyrasite.rtfd.org downl

Luke Macken 2.6k Sep 26, 2022
Visual Interaction with Code - A portable visual debugger for python

VIC Visual Interaction with Code A simple tool for debugging and interacting with running python code. This tool is designed to make it easy to inspec

Nathan Blank 1 Nov 16, 2021
Hunter is a flexible code tracing toolkit.

Overview docs tests package Hunter is a flexible code tracing toolkit, not for measuring coverage, but for debugging, logging, inspection and other ne

Ionel Cristian Mărieș 694 Sep 20, 2022