{"id":17216873,"url":"https://github.com/markusjx/stacktrace","last_synced_at":"2025-04-13T23:23:02.637Z","repository":{"id":104875041,"uuid":"298601446","full_name":"MarkusJx/stacktrace","owner":"MarkusJx","description":"C++ stack traces for windows, (debian based-) linux and macOs systems","archived":false,"fork":false,"pushed_at":"2022-09-25T13:48:20.000Z","size":102,"stargazers_count":7,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T13:39:55.026Z","etag":null,"topics":["cpp","developer-tools","stacktrace"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MarkusJx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-25T14:49:19.000Z","updated_at":"2024-12-24T19:01:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"0e862edb-3ba5-45b5-ab00-396301532503","html_url":"https://github.com/MarkusJx/stacktrace","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarkusJx%2Fstacktrace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarkusJx%2Fstacktrace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarkusJx%2Fstacktrace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarkusJx%2Fstacktrace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarkusJx","download_url":"https://codeload.github.com/MarkusJx/stacktrace/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248795178,"owners_count":21162725,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","developer-tools","stacktrace"],"created_at":"2024-10-15T03:42:34.435Z","updated_at":"2025-04-13T23:23:02.587Z","avatar_url":"https://github.com/MarkusJx.png","language":"C++","readme":"# stacktrace\nStack traces for windows, linux and macOs. Somewhat equal to the implementation in ``boost::stacktrace``.\nUses an edited version of the addr2line to get line numbers on linux. If you are using linux,\nyou must install ``binutils-dev`` and ``libiberty-dev`` in order to compile ``addr2line.c``.\n\n## Creating stack traces\nIn order to create a stack trace, you may do:\n```c++\n#include \u003ciostream\u003e\n#include \"stacktrace.hpp\"\n\nint main() {\n    // Create a stack trace\n    markusjx::stacktrace::stacktrace stacktrace;\n    \n    // Print out the stack trace\n    std::cout \u003c\u003c stacktrace;\n    \n    return 0;\n}\n```\n\n## Examples\nOn **windows**, stack traces may look like this (built in debug mode):\n```\n 0# markusjx::stacktrace::stacktrace::stacktrace in stacktrace.cpp:390\n 1# test_1 in test.cpp:6\n 2# main in main.cpp:33\n 3# invoke_main in exe_common.inl:79\n 4# __scrt_common_main_seh in exe_common.inl:288\n 5# __scrt_common_main in exe_common.inl:331\n 6# mainCRTStartup in exe_main.cpp:17\n```\n\nOn **linux**, stack traces may look like this:\n```\n 0# markusjx::stacktrace::stacktrace::stacktrace(unsigned long, unsigned long) in stacktrace.cpp:405\n 1# test_1() in test.cpp:6\n 2# main in main.cpp:33\n 3# __libc_start_main in libc.so.6\n 4# 0x000055944645CAEA in stacktrace\n```\n\nOn **macOs**, stack traces may look like this:\n```\n 0# markusjx::stacktrace::stacktrace::stacktrace(unsigned long, unsigned long) in stacktrace\n 1# markusjx::stacktrace::stacktrace::stacktrace(unsigned long, unsigned long) in stacktrace\n 2# test_1() in stacktrace\n 3# main in stacktrace\n 4# start in libdyld.dylib\n 5# 0   ???                                 0x0000000000000001 0x0 + 1\n```\n\n## Compiling\nIn order to compile this library, you could create a ``CMakeLists.txt`` similar to this:\n```CMake\ncmake_minimum_required(VERSION 3.17)\nproject(PROJECT_NAME)\n\nset(CMAKE_CXX_STANDARD 17)\nset(CMAKE_C_STANDARD 11)\n\n# On linux (and gcc) set the -g option to print\n# proper function names\nif (NOT WIN32 AND NOT APPLE)\n    set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -g\")\n    set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -g\")\nendif ()\n\n# If the addr2line library is not used, you must:\n#set(CMAKE_EXE_LINKER_FLAGS \"-rdynamic\")\n\nadd_executable(${PROJECT_NAME} main.cpp)\n\n# Add this after add_executable or add_library\ninclude(initStacktrace.cmake)\ninitStacktrace(${PROJECT_NAME})\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkusjx%2Fstacktrace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarkusjx%2Fstacktrace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkusjx%2Fstacktrace/lists"}