
{"id":10275,"date":"2017-09-20T11:39:14","date_gmt":"2017-09-20T11:39:14","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad-2\/"},"modified":"2025-03-25T05:18:37","modified_gmt":"2025-03-25T05:18:37","slug":"google_breakpad","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/","title":{"rendered":"Google Breakpad"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n <html><body><div class=\"contentLayout2\">\n<div class=\"columnLayout two-right-sidebar\" data-layout=\"two-right-sidebar\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<p>Breakpad is a library and tool suite that allows to distribute an application to users with compiler-provided debugging information removed. Breakpad library is linked with an application that is executed on platform. When an application crashes, it produces compact &#8220;minidump&#8221; files. These minidumps are sent back to the server and produce C and C++ stack traces.<\/p><\/div>\n<\/div>\n<div class=\"cell aside\" data-type=\"aside\">\n<div class=\"innerCell\">\n<div class=\"toc-macro client-side-toc-macro conf-macro output-block\" data-headerelements=\"H1,H2\" data-hasbody=\"false\" data-macro-name=\"toc\"><\/div><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<p><br><\/p><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h2 class=\"wp-main-header wp-block-heading\"><span>Breakpad Capabilities<\/span><\/h2><ul><li><p>Removes debug symbols from client code.<\/p><\/li><li>(Client) Writes minidump file with thread context.<\/li><li>(Client) Submits minidump to Crash Collector.<\/li><li>(Crash Collector) Reconstructs human readable stack trace.<\/li><\/ul><p><br><\/p><p><span>&nbsp;<\/span><\/p><div class=\"conf-macro output-block\" data-hasbody=\"false\" data-macro-name=\"drawio\">\n\t<div class=\"drawio-macro\" data-macroid=\"a078cde6-d80e-4b40-a152-6d31f3e9a3af\" data-buildnum=\"9012\" id=\"drawio-macro-content-a078cde6-d80e-4b40-a152-6d31f3e9a3af\"><\/div>\n\t<div id=\"drawio-macro-data-a078cde6-d80e-4b40-a152-6d31f3e9a3af\"><img decoding=\"async\" src=\"https:\/\/developer.rdkcentral.com\/support\/wp-content\/uploads\/sites\/21\/2024\/12\/Breakpad.png\" alt=\"Breakpad\" title=\"Breakpad\" \/><\/div>\n<\/div><p><br><\/p><p><span>When compiled, the stack produces library (libbreakpad_client.a), which should be linked with the test application. When application crashes, it creates minidump files. There are breakpad utilities like dump_syms and minidump_stackwalker which are used to analyze the minidump.<\/span><\/p><p><br><\/p><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h2 class=\"wp-main-header wp-block-heading\"><span>Setting up Breakpad<\/span><\/h2><h3 id=\"GoogleBreakpad-Cross-CompileBreakpadlibraryfortargetboard(eg:RPI)\">Cross-Compile Breakpad library for target board (eg: RPI)<\/h3><ul><li>git clone <a class=\"external-link\" href=\"https:\/\/chromium.googlesource.com\/breakpad\/breakpad\" rel=\"nofollow\">https:\/\/chromium.googlesource.com\/breakpad\/breakpad<\/a><\/li><li>.\/configure &#8211;host=arm-rdk-linux-gnueabi &#8211;prefix=\/usr<\/li><li>make<\/li><\/ul><p>After successful compilation, &ldquo;libbreakpad_client.a&rdquo; will be created in &ldquo;src\/client\/linux\/&rdquo; directory.<\/p><h3 id=\"GoogleBreakpad-CompileBreakpadforPCtogetutilitiestoanalyzeminidump\">Compile Breakpad for PC to get utilities to analyze minidump<\/h3><ul><li>git clone&nbsp;<a class=\"external-link\" href=\"https:\/\/chromium.googlesource.com\/breakpad\/breakpad\" rel=\"nofollow\">https:\/\/chromium.googlesource.com\/breakpad\/breakpad<\/a><\/li><li>.\/configure&nbsp;<\/li><li>make<\/li><\/ul><p>After successful compilation,&nbsp;executables dump_syms and minidump_stackwalk will be created in &ldquo;src\/tools\/linux\/&rdquo; directory.<\/p><p><br><\/p><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h2 class=\"wp-main-header wp-block-heading\"><span>Steps&nbsp;<\/span><span>to link google <\/span><span>breakpad<\/span><span> and create minidump<\/span><\/h2><ol><li>Create a sample app&nbsp;<p>vim breakpad_exercise.c<\/p><\/li><li><p>Include header file for exception handler<br>#include &#8220;client\/linux\/handler\/exception_handler.h&#8221;<\/p><\/li><li><p>Add breakpad handler in your application. This is the callback function which will be executed when a crash occurs:<\/p><\/li><\/ol><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">staticbool breakpadDumpCallback(constgoogle_breakpad::MinidumpDescriptor&amp;descriptor,void*context,boolsucceeded){\n    printf(\"Crash occurred,Callbackfunction called.n\");\n    return succeeded;\n}<\/pre>\n<\/div><\/div><p>&nbsp; &nbsp; &nbsp; 4. In main() function, add the handler and register it. Instantiate exception handler for breakpad with the path where minidumps will be created. Here, current directory (&ldquo;.\/ &rdquo;) where sample app is present &amp; executed is given as path.<\/p><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">staticgoogle_breakpad::ExceptionHandler*excHandler=NULL;\nexcHandler=newgoogle_breakpad::ExceptionHandler(google_breakpad::MinidumpDescriptor(\".\/\")),\nNULL, breakpadDumpCallback,NULL,true,-1);<\/pre>\n<\/div><\/div><p>&nbsp; &nbsp; &nbsp; 5. Create a crash in a function and&nbsp; call this function in main()<\/p><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">void err_func(){\n     char*p=NULL;\n     *p='A';\n     printf(\"Valueofpointer p:%cn\",*p);\n}<\/pre>\n<\/div><\/div><p>&nbsp; &nbsp; &nbsp; 6. Link Breakpad library and include path in Makefile<\/p><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">PKG_CONFIG_PATH=..\/\nall:breakpad_exercise.c\n     @$(CXX) -std=c++11 breakpad_exercise.c-g-o breakpad_exercise 'pkg-config --cflags breakpad'-\nL.\/client\/linux\/-lbreakpad_client-l.\/-lpthread<\/pre>\n<\/div><\/div><p>&nbsp; &nbsp; &nbsp; 7. Run the application (which crashes and minidump gets generated)<\/p><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">root@raspberrypi-rdk-hybrid:~# ls\nbreakpad_exercise\nroot@raspberrypi-rdk-hybrid:~# .\/breakpad_exercise\ncrash occurred, Callback function called.\nSegmentation fault (core dumped)\nroot@raspberrypi-rdk-hybrid:~#<\/pre>\n<\/div><\/div><p>&nbsp; &nbsp; &nbsp; &nbsp;A minidump file will be generated in the same directory:<\/p><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">root@raspberrypi-rdk-hybrid:~# ls\n40e9abf8-19cc-4b55-cd2bb29f-dbd37900.dmp   breakpad_exercise\nroot@raspberrypi-rdk-hybrid:~#<\/pre>\n<\/div><\/div><p><br><\/p><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h2 class=\"wp-main-header wp-block-heading\">Analyze minidump<\/h2><h3 id=\"GoogleBreakpad-dump_syms\">dump_syms<\/h3><p>Breakpad tool &ldquo;dump_syms&rdquo; run on binaries to produce the text-format symbols. The minidump should be copied to server pc where dump_syms is present.<\/p><p><strong>breakpad\/src\/tools\/linux\/dump_syms\/dump_syms breakpad_exercise&nbsp; &gt;&nbsp; breakpad_exercise.sym<\/strong><\/p><p>Run below command on symbol file to get the first line:<\/p><p><strong>head -n1 breakpad_exercise.sym<\/strong><\/p><p>Output (for example):<\/p><p>MODULE Linux arm 73DC1FFAD46D0ECDC4988DBBD008BBC70 breakpad_exercise<\/p><p>In the ideal scenario, this symbol file will be extracted initially and uploaded to some server. The application\/library without symbols will be deployed. Once crashed, the minidump will be generated, which will be analyzed along with this symbol file to generate stack trace.<\/p><h3 id=\"GoogleBreakpad-minidump_stackwalk\">minidump_stackwalk<\/h3><p>This utility will give meaningful trace from minidump and symbol file.<\/p><p>Create directory of name of this string (code), as shown below:<\/p><p><strong>mkdir&nbsp; -p symbols\/breakpad_exercise\/73DC1FFAD46D0ECDC4988DBBD008BBC70<\/strong><\/p><p>Copy &ldquo;breakpad_exercise.sym&rdquo; file to the above path.<\/p><p><strong>cp breakpad_exercise.sym symbols\/breakpad_exercise\/73DC1FFAD46D0ECDC4988DBBD008BBC70<\/strong><\/p><p>Run minidump_stackwalk tool on minidump file as below to produce a symbolized stack trace.<\/p><p><strong>breakpad\/src\/processor\/minidump_stackwalk&nbsp; 40e9abf8-19cc-4b55-cd2bb29f-dbd37900.dmp&nbsp; symbols\/ &gt;&nbsp; tracefile<\/strong><\/p><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Operating system: Linux\n                  0.0.0 Linux 4.1.21 #1 SMP Wed May 17 06:33:42 UTC 2017 armv71\nCPU: arm\n &nbsp; &nbsp;   ARMv1 ARM part (0x4100d030) features: half, thumb, fastmult, vfpv2, edsp, neon,\n       vfpv3,tls, vfpv4, idiva, idivt, 4 CPUs\nGPU: UNKNOWN\nCrash reason:  SIGSEGV\nCrash address: 0x0\nProcess uptime: not available\n\nThread 0 (crashed)\n 0  breakpad_exercise!err_func [breakpad_exercise.c : 13 + 0x8]\n      r0 = 0x7e9a0bf0    r1 = 0x00000001  &nbsp; &nbsp;r2 = 0x00000041    r3 = 0x00000000 &nbsp;  \n &nbsp; &nbsp; &nbsp;r4 = 0x01a5cf10   &nbsp;r5 = 0x7e9a0680     r6 = 0x0000987c   &nbsp;r7 = 0x00000000 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;     r8 = 0x00000000 &nbsp;  r9 = 0x00000000 &nbsp;  r10 = 0x76f5e000 &nbsp; r12 = 0x76e9463c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;   &nbsp; fp = 0x7e9a0b6c   &nbsp;sp = 0x7e9a0b60&nbsp; &nbsp;  Ir = 0x00009afc   &nbsp;pc = 0x00009a18&nbsp; \n    Found by: given as instruction pointer in context\n1 &nbsp; breakpad_exercise!main [breakpad_exercise.c : 23 + 0x2]\n      r4 = 0x01a5cf10    r5 = 0x7e9a0b80 &nbsp; &nbsp;r6 = 0x0000987c &nbsp; &nbsp; r7 = 0x00000000 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; r8 = 0x00000000 &nbsp; &nbsp;r9 = 0x00000000 &nbsp; r10 = 0x76f5e000     fp = 0x7e9a0c04 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  \n &nbsp; &nbsp; &nbsp;sp = 0x7e9a0670    pc = 0x00009afc &nbsp; &nbsp;r6 = 0x0000987c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  \n    Found by: call frame info\n2   libc-2.23.so + 0x16eb6\n      r4 = 0x0001924c    r5 = 0x00000000 &nbsp;  r6 = 0x0000987c &nbsp; &nbsp; r7 = 0x00000000 &nbsp; &nbsp; \n      r8 = 0x00000000    r9 = 0x00000000   r10 = 0x76f5e000     fp = 0x7e9a0d54\n      sp = 0x7e9a0c08 &nbsp; &nbsp;pc = 0x76c5ceb8  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \n    Found by: call frame info &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;                                                                                                                                                                                                                                                                                                        <\/pre>\n<\/div><\/div><p><br><\/p><\/div>\n<\/div>\n<\/div>\n<\/div><\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>Breakpad is a library and tool suite that allows to distribute an application to users [&hellip;]<\/p>\n","protected":false},"author":1030,"featured_media":0,"parent":290,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-10275","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Google Breakpad - RDK Documentation Portal | Support<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Google Breakpad - RDK Documentation Portal | Support\" \/>\n<meta property=\"og:description\" content=\"Breakpad is a library and tool suite that allows to distribute an application to users [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Support\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-25T05:18:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/developer.rdkcentral.com\/support\/wp-content\/uploads\/sites\/21\/2024\/12\/Breakpad.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/\",\"name\":\"Google Breakpad - RDK Documentation Portal | Support\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/developer.rdkcentral.com\/support\/wp-content\/uploads\/sites\/21\/2024\/12\/Breakpad.png\",\"datePublished\":\"2017-09-20T11:39:14+00:00\",\"dateModified\":\"2025-03-25T05:18:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/#primaryimage\",\"url\":\"https:\/\/developer.rdkcentral.com\/support\/wp-content\/uploads\/sites\/21\/2024\/12\/Breakpad.png\",\"contentUrl\":\"https:\/\/developer.rdkcentral.com\/support\/wp-content\/uploads\/sites\/21\/2024\/12\/Breakpad.png\",\"width\":768,\"height\":579},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/support\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Support\",\"item\":\"https:\/\/developer.rdkcentral.com\/support\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Articles\",\"item\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"RDK-V Debugging and Logging\",\"item\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Google Breakpad\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/support\/\",\"name\":\"RDK Documentation Portal | Support\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/support\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Google Breakpad - RDK Documentation Portal | Support","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/","og_locale":"en_US","og_type":"article","og_title":"Google Breakpad - RDK Documentation Portal | Support","og_description":"Breakpad is a library and tool suite that allows to distribute an application to users [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/","og_site_name":"RDK Documentation Portal | Support","article_modified_time":"2025-03-25T05:18:37+00:00","og_image":[{"url":"https:\/\/developer.rdkcentral.com\/support\/wp-content\/uploads\/sites\/21\/2024\/12\/Breakpad.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/","url":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/","name":"Google Breakpad - RDK Documentation Portal | Support","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/support\/#website"},"primaryImageOfPage":{"@id":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/#primaryimage"},"image":{"@id":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/#primaryimage"},"thumbnailUrl":"https:\/\/developer.rdkcentral.com\/support\/wp-content\/uploads\/sites\/21\/2024\/12\/Breakpad.png","datePublished":"2017-09-20T11:39:14+00:00","dateModified":"2025-03-25T05:18:37+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/#primaryimage","url":"https:\/\/developer.rdkcentral.com\/support\/wp-content\/uploads\/sites\/21\/2024\/12\/Breakpad.png","contentUrl":"https:\/\/developer.rdkcentral.com\/support\/wp-content\/uploads\/sites\/21\/2024\/12\/Breakpad.png","width":768,"height":579},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/google_breakpad\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/support\/"},{"@type":"ListItem","position":2,"name":"Support","item":"https:\/\/developer.rdkcentral.com\/support\/"},{"@type":"ListItem","position":3,"name":"Articles","item":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/"},{"@type":"ListItem","position":4,"name":"RDK-V Debugging and Logging","item":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk-v_debugging_and_logging\/"},{"@type":"ListItem","position":5,"name":"Google Breakpad"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/support\/#website","url":"https:\/\/developer.rdkcentral.com\/support\/","name":"RDK Documentation Portal | Support","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/support\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/pages\/10275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/users\/1030"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/comments?post=10275"}],"version-history":[{"count":2,"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/pages\/10275\/revisions"}],"predecessor-version":[{"id":10278,"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/pages\/10275\/revisions\/10278"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/pages\/290"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/media?parent=10275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}