Downloads & Free Reading Options - Results
At That Point In Time by Fred D. Thompson
Read "At That Point In Time" by Fred D. Thompson through these free online access and download options.
Books Results
Source: The Internet Archive
The internet Archive Search Results
Available books for downloads and borrow from The internet Archive
1Eye On Palestine - For The Second Time During The War On Gaza, Civil Defense Crews Were Directly Targeted At A Civil Defense Point In The Nuseirat Area, While Performing Their Humanitarian Duty To Save Lives Amid The Ongoing Escalation. Systematic Targeting That Reflects A Blatant Challenge To
By Eye on Palestine
For the second time during the war on Gaza, civil defense crews were directly targeted at a civil defense point in the Nuseirat area, while performing their humanitarian duty to save lives amid the ongoing escalation. Systematic targeting that reflects a blatant challenge to https://t.co/rgasnkbd7W
“Eye On Palestine - For The Second Time During The War On Gaza, Civil Defense Crews Were Directly Targeted At A Civil Defense Point In The Nuseirat Area, While Performing Their Humanitarian Duty To Save Lives Amid The Ongoing Escalation. Systematic Targeting That Reflects A Blatant Challenge To” Metadata:
- Title: ➤ Eye On Palestine - For The Second Time During The War On Gaza, Civil Defense Crews Were Directly Targeted At A Civil Defense Point In The Nuseirat Area, While Performing Their Humanitarian Duty To Save Lives Amid The Ongoing Escalation. Systematic Targeting That Reflects A Blatant Challenge To
- Author: Eye on Palestine
“Eye On Palestine - For The Second Time During The War On Gaza, Civil Defense Crews Were Directly Targeted At A Civil Defense Point In The Nuseirat Area, While Performing Their Humanitarian Duty To Save Lives Amid The Ongoing Escalation. Systematic Targeting That Reflects A Blatant Challenge To” Subjects and Themes:
Edition Identifiers:
- Internet Archive ID: twitter-1868352750972489729
Downloads Information:
The book is available for download in "movies" format, the size of the file-s is: 6.59 Mbs, the file-s for this book were downloaded 9 times, the file-s went public at Mon Dec 16 2024.
Available formats:
Archive BitTorrent - Item Tile - JPEG - JPEG Thumb - JSON - MPEG4 - Metadata - Thumbnail - Unknown -
Related Links:
- Whefi.com: Download
- Whefi.com: Review - Coverage
- Internet Archive: Details
- Internet Archive Link: Downloads
Online Marketplaces
Find Eye On Palestine - For The Second Time During The War On Gaza, Civil Defense Crews Were Directly Targeted At A Civil Defense Point In The Nuseirat Area, While Performing Their Humanitarian Duty To Save Lives Amid The Ongoing Escalation. Systematic Targeting That Reflects A Blatant Challenge To at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
2At That Point In Time : The Inside Story Of The Senate Watergate Committee
By Thompson, Fred, 1942-2015
For the second time during the war on Gaza, civil defense crews were directly targeted at a civil defense point in the Nuseirat area, while performing their humanitarian duty to save lives amid the ongoing escalation. Systematic targeting that reflects a blatant challenge to https://t.co/rgasnkbd7W
“At That Point In Time : The Inside Story Of The Senate Watergate Committee” Metadata:
- Title: ➤ At That Point In Time : The Inside Story Of The Senate Watergate Committee
- Author: Thompson, Fred, 1942-2015
- Language: English
“At That Point In Time : The Inside Story Of The Senate Watergate Committee” Subjects and Themes:
- Subjects: ➤ Thompson, Fred, 1942-2015 - United States. Congress. Senate. Select Committee on Presidential Campaign Activities - Watergate Affair, 1972-1974
Edition Identifiers:
- Internet Archive ID: atthatpointintim0000thom
Downloads Information:
The book is available for download in "texts" format, the size of the file-s is: 643.05 Mbs, the file-s for this book were downloaded 126 times, the file-s went public at Tue Jan 25 2022.
Available formats:
ACS Encrypted PDF - Cloth Cover Detection Log - DjVuTXT - Djvu XML - Dublin Core - EPUB - Item Tile - JPEG Thumb - JSON - LCP Encrypted EPUB - LCP Encrypted PDF - Log - MARC - MARC Binary - Metadata - OCR Page Index - OCR Search Text - PNG - Page Numbers JSON - Scandata - Single Page Original JP2 Tar - Single Page Processed JP2 ZIP - Text PDF - Title Page Detection Log - chOCR - hOCR -
Related Links:
- Whefi.com: Download
- Whefi.com: Review - Coverage
- Internet Archive: Details
- Internet Archive Link: Downloads
Online Marketplaces
Find At That Point In Time : The Inside Story Of The Senate Watergate Committee at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
3ERIC ED584963: Race To The Top - Early Learning Challenge: 2016 Annual Performance Report. Michigan This Race To The Top - Early Learning Challenge (RTT-ELC) Annual Performance Report For The Year 2016 Describes Michigan's Accomplishments, Lessons Learned, Challenges, And Strategies Michigan Will Implement To Address Those Challenges. Strengthened Investment In High-quality Early Learning And Development Continues To Energize Educational Improvement Efforts In Michigan. From The Governor's Office And The Legislature To Local Providers, Business Leaders, Schools, And Families, People Are Deeply Committed To Improving Opportunities For Young Children With High Needs In Michigan. In 2013, The Michigan Department Of Education, Office Of Great Start (MDEOGS) Held Conversations With 1,400 Parents Of Young Children, Educators, Business Leaders, And Local And State Program Directors To Inform Development Of A Statewide Plan To Achieve Governor Snyder's Stated Outcomes For Young Children: (1) Children Are Born Healthy; (2) Children Are Healthy, Thriving, And Developmentally On Track From Birth To Third Grade; (3) Children Are Developmentally Ready To Succeed In School At The Time Of School Entry; And (4) Children Are Prepared To Succeed In Fourth Grade And Beyond By Reading Proficiently At The End Of Third Grade. The Resulting Publication, Entitled "Great Start, Great Investment, Great Future: The Plan For Early Learning And Development In Michigan," Illustrates That Michigan's Citizens Recognize The Vital Foundation That A System Rich In Parent Involvement, Community And State Collaboration, And High-quality Accessible Early Learning And Development Programs Can Provide For Their Youngest Citizens. Drawing From The Guiding Principles Of This Plan And With The Identified Outcomes For Young Children As A Focal Point, In 2013 Michigan Submitted A Comprehensive Application For A Race To The Top - Early Learning Challenge (RTT-ELC) Competitive Federal Grant. As A Result, Michigan Was Awarded $51,737,456 For The Purposes Of Improving Early Learning And Development In The State Over A Period Of Four Years, Beginning January 2014 And Ending December 2017. The Grant Is Focused On The Improvement Of Early Childhood Systems Through: (1) Increasing Access To High-quality Programs For Children With High Needs; (2) Implementing And Coordinating An Integrated System Of Programs; And (3) Evaluating And Rating Program Quality. The Michigan Department Of Education, Office Of Great Start Was Identified As The Lead Agency For RTT-ELC Implementation In The Grant Application. Michigan Has Prioritized Its Work Into Seven Projects For Improving Early Childhood Outcomes For All Children. These Projects Are Designed To Support The Creation Of A Truly Collaborative System Of Early Learning And Development--one That Requires The Collective Efforts Of Policymakers, Program Directors, Providers, And Parents. The Projects Are As Follows: (1) Grant Management And Governance; (2) Improving Quality Through Increased Participation In Great Start To Quality; (3) Promotion Of Physical And Social-Emotional Health; (4) Enhancing And Increasing Access To The Great Start To Quality System; (5) Improving The Early Learning And Development Workforce; (6) Measuring Outcomes For Children, Programs, & Educators; And (7) Increasing Family Engagement.
By ERIC
This Race to the Top - Early Learning Challenge (RTT-ELC) annual performance report for the year 2016 describes Michigan's accomplishments, lessons learned, challenges, and strategies Michigan will implement to address those challenges. Strengthened investment in high-quality early learning and development continues to energize educational improvement efforts in Michigan. From the governor's office and the legislature to local providers, business leaders, schools, and families, people are deeply committed to improving opportunities for young children with high needs in Michigan. In 2013, the Michigan Department of Education, Office of Great Start (MDEOGS) held conversations with 1,400 parents of young children, educators, business leaders, and local and state program directors to inform development of a statewide plan to achieve Governor Snyder's stated outcomes for young children: (1) Children are born healthy; (2) Children are healthy, thriving, and developmentally on track from birth to third grade; (3) Children are developmentally ready to succeed in school at the time of school entry; and (4) Children are prepared to succeed in fourth grade and beyond by reading proficiently at the end of third grade. The resulting publication, entitled "Great Start, Great Investment, Great Future: The Plan for Early Learning and Development in Michigan," illustrates that Michigan's citizens recognize the vital foundation that a system rich in parent involvement, community and state collaboration, and high-quality accessible early learning and development programs can provide for their youngest citizens. Drawing from the guiding principles of this plan and with the identified outcomes for young children as a focal point, in 2013 Michigan submitted a comprehensive application for a Race to the Top - Early Learning Challenge (RTT-ELC) competitive federal grant. As a result, Michigan was awarded $51,737,456 for the purposes of improving early learning and development in the state over a period of four years, beginning January 2014 and ending December 2017. The grant is focused on the improvement of early childhood systems through: (1) increasing access to high-quality programs for children with high needs; (2) implementing and coordinating an integrated system of programs; and (3) evaluating and rating program quality. The Michigan Department of Education, Office of Great Start was identified as the lead agency for RTT-ELC implementation in the grant application. Michigan has prioritized its work into seven projects for improving early childhood outcomes for all children. These projects are designed to support the creation of a truly collaborative system of early learning and development--one that requires the collective efforts of policymakers, program directors, providers, and parents. The projects are as follows: (1) Grant Management and Governance; (2) Improving Quality through Increased Participation in Great Start to Quality; (3) Promotion of Physical and Social-Emotional Health; (4) Enhancing and Increasing Access to the Great Start to Quality System; (5) Improving the Early Learning and Development Workforce; (6) Measuring Outcomes for Children, Programs, & Educators; and (7) Increasing Family Engagement.
“ERIC ED584963: Race To The Top - Early Learning Challenge: 2016 Annual Performance Report. Michigan This Race To The Top - Early Learning Challenge (RTT-ELC) Annual Performance Report For The Year 2016 Describes Michigan's Accomplishments, Lessons Learned, Challenges, And Strategies Michigan Will Implement To Address Those Challenges. Strengthened Investment In High-quality Early Learning And Development Continues To Energize Educational Improvement Efforts In Michigan. From The Governor's Office And The Legislature To Local Providers, Business Leaders, Schools, And Families, People Are Deeply Committed To Improving Opportunities For Young Children With High Needs In Michigan. In 2013, The Michigan Department Of Education, Office Of Great Start (MDEOGS) Held Conversations With 1,400 Parents Of Young Children, Educators, Business Leaders, And Local And State Program Directors To Inform Development Of A Statewide Plan To Achieve Governor Snyder's Stated Outcomes For Young Children: (1) Children Are Born Healthy; (2) Children Are Healthy, Thriving, And Developmentally On Track From Birth To Third Grade; (3) Children Are Developmentally Ready To Succeed In School At The Time Of School Entry; And (4) Children Are Prepared To Succeed In Fourth Grade And Beyond By Reading Proficiently At The End Of Third Grade. The Resulting Publication, Entitled "Great Start, Great Investment, Great Future: The Plan For Early Learning And Development In Michigan," Illustrates That Michigan's Citizens Recognize The Vital Foundation That A System Rich In Parent Involvement, Community And State Collaboration, And High-quality Accessible Early Learning And Development Programs Can Provide For Their Youngest Citizens. Drawing From The Guiding Principles Of This Plan And With The Identified Outcomes For Young Children As A Focal Point, In 2013 Michigan Submitted A Comprehensive Application For A Race To The Top - Early Learning Challenge (RTT-ELC) Competitive Federal Grant. As A Result, Michigan Was Awarded $51,737,456 For The Purposes Of Improving Early Learning And Development In The State Over A Period Of Four Years, Beginning January 2014 And Ending December 2017. The Grant Is Focused On The Improvement Of Early Childhood Systems Through: (1) Increasing Access To High-quality Programs For Children With High Needs; (2) Implementing And Coordinating An Integrated System Of Programs; And (3) Evaluating And Rating Program Quality. The Michigan Department Of Education, Office Of Great Start Was Identified As The Lead Agency For RTT-ELC Implementation In The Grant Application. Michigan Has Prioritized Its Work Into Seven Projects For Improving Early Childhood Outcomes For All Children. These Projects Are Designed To Support The Creation Of A Truly Collaborative System Of Early Learning And Development--one That Requires The Collective Efforts Of Policymakers, Program Directors, Providers, And Parents. The Projects Are As Follows: (1) Grant Management And Governance; (2) Improving Quality Through Increased Participation In Great Start To Quality; (3) Promotion Of Physical And Social-Emotional Health; (4) Enhancing And Increasing Access To The Great Start To Quality System; (5) Improving The Early Learning And Development Workforce; (6) Measuring Outcomes For Children, Programs, & Educators; And (7) Increasing Family Engagement.” Metadata:
- Title: ➤ ERIC ED584963: Race To The Top - Early Learning Challenge: 2016 Annual Performance Report. Michigan This Race To The Top - Early Learning Challenge (RTT-ELC) Annual Performance Report For The Year 2016 Describes Michigan's Accomplishments, Lessons Learned, Challenges, And Strategies Michigan Will Implement To Address Those Challenges. Strengthened Investment In High-quality Early Learning And Development Continues To Energize Educational Improvement Efforts In Michigan. From The Governor's Office And The Legislature To Local Providers, Business Leaders, Schools, And Families, People Are Deeply Committed To Improving Opportunities For Young Children With High Needs In Michigan. In 2013, The Michigan Department Of Education, Office Of Great Start (MDEOGS) Held Conversations With 1,400 Parents Of Young Children, Educators, Business Leaders, And Local And State Program Directors To Inform Development Of A Statewide Plan To Achieve Governor Snyder's Stated Outcomes For Young Children: (1) Children Are Born Healthy; (2) Children Are Healthy, Thriving, And Developmentally On Track From Birth To Third Grade; (3) Children Are Developmentally Ready To Succeed In School At The Time Of School Entry; And (4) Children Are Prepared To Succeed In Fourth Grade And Beyond By Reading Proficiently At The End Of Third Grade. The Resulting Publication, Entitled "Great Start, Great Investment, Great Future: The Plan For Early Learning And Development In Michigan," Illustrates That Michigan's Citizens Recognize The Vital Foundation That A System Rich In Parent Involvement, Community And State Collaboration, And High-quality Accessible Early Learning And Development Programs Can Provide For Their Youngest Citizens. Drawing From The Guiding Principles Of This Plan And With The Identified Outcomes For Young Children As A Focal Point, In 2013 Michigan Submitted A Comprehensive Application For A Race To The Top - Early Learning Challenge (RTT-ELC) Competitive Federal Grant. As A Result, Michigan Was Awarded $51,737,456 For The Purposes Of Improving Early Learning And Development In The State Over A Period Of Four Years, Beginning January 2014 And Ending December 2017. The Grant Is Focused On The Improvement Of Early Childhood Systems Through: (1) Increasing Access To High-quality Programs For Children With High Needs; (2) Implementing And Coordinating An Integrated System Of Programs; And (3) Evaluating And Rating Program Quality. The Michigan Department Of Education, Office Of Great Start Was Identified As The Lead Agency For RTT-ELC Implementation In The Grant Application. Michigan Has Prioritized Its Work Into Seven Projects For Improving Early Childhood Outcomes For All Children. These Projects Are Designed To Support The Creation Of A Truly Collaborative System Of Early Learning And Development--one That Requires The Collective Efforts Of Policymakers, Program Directors, Providers, And Parents. The Projects Are As Follows: (1) Grant Management And Governance; (2) Improving Quality Through Increased Participation In Great Start To Quality; (3) Promotion Of Physical And Social-Emotional Health; (4) Enhancing And Increasing Access To The Great Start To Quality System; (5) Improving The Early Learning And Development Workforce; (6) Measuring Outcomes For Children, Programs, & Educators; And (7) Increasing Family Engagement.
- Author: ERIC
- Language: English
“ERIC ED584963: Race To The Top - Early Learning Challenge: 2016 Annual Performance Report. Michigan This Race To The Top - Early Learning Challenge (RTT-ELC) Annual Performance Report For The Year 2016 Describes Michigan's Accomplishments, Lessons Learned, Challenges, And Strategies Michigan Will Implement To Address Those Challenges. Strengthened Investment In High-quality Early Learning And Development Continues To Energize Educational Improvement Efforts In Michigan. From The Governor's Office And The Legislature To Local Providers, Business Leaders, Schools, And Families, People Are Deeply Committed To Improving Opportunities For Young Children With High Needs In Michigan. In 2013, The Michigan Department Of Education, Office Of Great Start (MDEOGS) Held Conversations With 1,400 Parents Of Young Children, Educators, Business Leaders, And Local And State Program Directors To Inform Development Of A Statewide Plan To Achieve Governor Snyder's Stated Outcomes For Young Children: (1) Children Are Born Healthy; (2) Children Are Healthy, Thriving, And Developmentally On Track From Birth To Third Grade; (3) Children Are Developmentally Ready To Succeed In School At The Time Of School Entry; And (4) Children Are Prepared To Succeed In Fourth Grade And Beyond By Reading Proficiently At The End Of Third Grade. The Resulting Publication, Entitled "Great Start, Great Investment, Great Future: The Plan For Early Learning And Development In Michigan," Illustrates That Michigan's Citizens Recognize The Vital Foundation That A System Rich In Parent Involvement, Community And State Collaboration, And High-quality Accessible Early Learning And Development Programs Can Provide For Their Youngest Citizens. Drawing From The Guiding Principles Of This Plan And With The Identified Outcomes For Young Children As A Focal Point, In 2013 Michigan Submitted A Comprehensive Application For A Race To The Top - Early Learning Challenge (RTT-ELC) Competitive Federal Grant. As A Result, Michigan Was Awarded $51,737,456 For The Purposes Of Improving Early Learning And Development In The State Over A Period Of Four Years, Beginning January 2014 And Ending December 2017. The Grant Is Focused On The Improvement Of Early Childhood Systems Through: (1) Increasing Access To High-quality Programs For Children With High Needs; (2) Implementing And Coordinating An Integrated System Of Programs; And (3) Evaluating And Rating Program Quality. The Michigan Department Of Education, Office Of Great Start Was Identified As The Lead Agency For RTT-ELC Implementation In The Grant Application. Michigan Has Prioritized Its Work Into Seven Projects For Improving Early Childhood Outcomes For All Children. These Projects Are Designed To Support The Creation Of A Truly Collaborative System Of Early Learning And Development--one That Requires The Collective Efforts Of Policymakers, Program Directors, Providers, And Parents. The Projects Are As Follows: (1) Grant Management And Governance; (2) Improving Quality Through Increased Participation In Great Start To Quality; (3) Promotion Of Physical And Social-Emotional Health; (4) Enhancing And Increasing Access To The Great Start To Quality System; (5) Improving The Early Learning And Development Workforce; (6) Measuring Outcomes For Children, Programs, & Educators; And (7) Increasing Family Engagement.” Subjects and Themes:
- Subjects: ➤ ERIC Archive - ERIC - Early Childhood Education - State Programs - Educational Quality - Accountability - Program Evaluation - Program Effectiveness - Access to Education - Program Validation - Child Development - Academic Standards - Educational Assessment - Health Promotion - Family School Relationship - Preschool Children - Preschool Teachers - Teacher Competencies - Credentials - Teacher Characteristics - School Readiness - Outcome Measures - Tables (Data) - Educational Legislation - Federal Aid - Federal Legislation - Federal Programs
Edition Identifiers:
- Internet Archive ID: ERIC_ED584963
Downloads Information:
The book is available for download in "texts" format, the size of the file-s is: 57.21 Mbs, the file-s for this book were downloaded 63 times, the file-s went public at Thu May 25 2023.
Available formats:
Archive BitTorrent - DjVuTXT - Djvu XML - Item Tile - Metadata - OCR Page Index - OCR Search Text - Page Numbers JSON - Scandata - Single Page Processed JP2 ZIP - Text PDF - chOCR - hOCR -
Related Links:
- Whefi.com: Download
- Whefi.com: Review - Coverage
- Internet Archive: Details
- Internet Archive Link: Downloads
Online Marketplaces
Find ERIC ED584963: Race To The Top - Early Learning Challenge: 2016 Annual Performance Report. Michigan This Race To The Top - Early Learning Challenge (RTT-ELC) Annual Performance Report For The Year 2016 Describes Michigan's Accomplishments, Lessons Learned, Challenges, And Strategies Michigan Will Implement To Address Those Challenges. Strengthened Investment In High-quality Early Learning And Development Continues To Energize Educational Improvement Efforts In Michigan. From The Governor's Office And The Legislature To Local Providers, Business Leaders, Schools, And Families, People Are Deeply Committed To Improving Opportunities For Young Children With High Needs In Michigan. In 2013, The Michigan Department Of Education, Office Of Great Start (MDEOGS) Held Conversations With 1,400 Parents Of Young Children, Educators, Business Leaders, And Local And State Program Directors To Inform Development Of A Statewide Plan To Achieve Governor Snyder's Stated Outcomes For Young Children: (1) Children Are Born Healthy; (2) Children Are Healthy, Thriving, And Developmentally On Track From Birth To Third Grade; (3) Children Are Developmentally Ready To Succeed In School At The Time Of School Entry; And (4) Children Are Prepared To Succeed In Fourth Grade And Beyond By Reading Proficiently At The End Of Third Grade. The Resulting Publication, Entitled "Great Start, Great Investment, Great Future: The Plan For Early Learning And Development In Michigan," Illustrates That Michigan's Citizens Recognize The Vital Foundation That A System Rich In Parent Involvement, Community And State Collaboration, And High-quality Accessible Early Learning And Development Programs Can Provide For Their Youngest Citizens. Drawing From The Guiding Principles Of This Plan And With The Identified Outcomes For Young Children As A Focal Point, In 2013 Michigan Submitted A Comprehensive Application For A Race To The Top - Early Learning Challenge (RTT-ELC) Competitive Federal Grant. As A Result, Michigan Was Awarded $51,737,456 For The Purposes Of Improving Early Learning And Development In The State Over A Period Of Four Years, Beginning January 2014 And Ending December 2017. The Grant Is Focused On The Improvement Of Early Childhood Systems Through: (1) Increasing Access To High-quality Programs For Children With High Needs; (2) Implementing And Coordinating An Integrated System Of Programs; And (3) Evaluating And Rating Program Quality. The Michigan Department Of Education, Office Of Great Start Was Identified As The Lead Agency For RTT-ELC Implementation In The Grant Application. Michigan Has Prioritized Its Work Into Seven Projects For Improving Early Childhood Outcomes For All Children. These Projects Are Designed To Support The Creation Of A Truly Collaborative System Of Early Learning And Development--one That Requires The Collective Efforts Of Policymakers, Program Directors, Providers, And Parents. The Projects Are As Follows: (1) Grant Management And Governance; (2) Improving Quality Through Increased Participation In Great Start To Quality; (3) Promotion Of Physical And Social-Emotional Health; (4) Enhancing And Increasing Access To The Great Start To Quality System; (5) Improving The Early Learning And Development Workforce; (6) Measuring Outcomes For Children, Programs, & Educators; And (7) Increasing Family Engagement. at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
4The Chromium Logo The Chromium Projects Home Chromium ChromiumOS Quick Links Report Bugs Discuss Other Sites Chromium Blog Google Chrome Extensions Except As Otherwise Noted, The Content Of This Page Is Licensed Under A Creative Commons Attribution 2.5 License, And Examples Are Licensed Under The BSD License. Privacy Edit This Page For Developers > How-Tos > Debugging Chromium On Windows First See Get The Code For Checkout And Build Instructions. Getting Started You Can Use Visual Studio's Built-in Debugger Or WinDBG To Debug Chromium. You Don't Need To Use The IDE To Build In Order To Use The Debugger: Autoninja Is Used To Build Chromium And Most Developers Invoke It From A Command Prompt, And Then Open The IDE For Debugging As Necessary. To Start Debugging An Already-built Executable With Visual Studio Just Launch Visual Studio (2019 Or Higher) And Select File-> Open-> Project/Solution (Ctrl+Shift+O) And Select The Executable Of Interest. This Will Create A Solution With That Executable As The 'project'. You Can Then Launch The Debugger With F5 Or F11 Or From The Debug Menu. If You Right-click On The Executable In Solution Explorer And Select Properties Then You Can Edit Things Such As The Executable Path, Command-line Arguments, And Working Directory. You Can Add Additional Executables To The Solution By Using File-> Add-> Existing Project And Selecting Another Already-built Executable. You Can Select Which One To Debug By Right-clicking On One Of Them In Solution Explorer And Selecting Set As Startup Project. When Your Solution File Is Customized To Your Taste You Can Save It To A Directory Such As Out\solutions. Saving It There Helps Ensure That Relative Paths To Source Files, Printed From Build Commands, Will Correctly Identify The Source Files. The Tools Menu Can Be Used To Add Commands To Do Things Like Invoke Autoninja To Build Chrome, Compile The Selected Source File, Or Other Things. Visual Studio 2017 Is Not Recommended For Debugging Of Chromium - Use A Newer Version For Best Performance And Stability. Symbol_level=2 Is The Default On Windows And Gives Full Debugging Information With Types, Locals, Globals, Function Names, And Source/line Information. Symbol_level=1 Creates Smaller PDBs With Just Function Names, And Source/line Information - Source-level Debugging Is Still Supported (new From June 2019), But Local Variables And Type Information Are Missing. Symbol_level=0 Gives Extremely Limited Debugging Abilities, Mostly Just Viewing Call Stacks When Chromium Crashes. Browsing Source Code If You Use A Solution File Generated By Gn (gn Gen --ide=vs) Then Intellisense May Help You Navigate The Code. If This Doesn't Work Or If You Use A Solution Created As Above Then You May Want To Install VsChromium To Help Navigate The Code, As Well As Using Https://source.chromium.org. Profiles It's A Good Idea To Use A Different Chrome Profile For Your Debugging. If You Are Debugging Google Chrome Branded Builds, Or Use A Chromium Build As Your Primary Browser, The Profiles Can Collide So You Can't Run Both At Once, And Your Stable Browser Might See Profile Versions From The Future (Google Chrome And Chromium Use Different Profile Directories By Default So Won't Collide). Use The Command-line Option: --user-data-dir=C:\tmp\my_debug_profile (replace The Path As Necessary) Using The IDE, Go To The Debugging Tab Of The Properties Of The Chrome Project, And Set The Command Arguments. Chrome Debug Log Enable Chrome Debug Logging To A File By Passing --enable-logging --v=1 Command-line Flags At Startup. Debug Builds Place The Chrome_debug.log File In The Out\Debug Directory. Release Builds Place The File In The Top Level Of The User Data Chromium App Directory, Which Is OS-version-dependent. For More Information, See Logging And User Data Directory Details. Symbol Server If You Are Debugging Official Google Chrome Release Builds, Use The Symbol Server: Https://chromium-browser-symsrv.commondatastorage.googleapis.com In Visual Studio, This Goes In Tools > Options Under Debugging > Symbols. You Should Set Up A Local Cache In A Empty Directory On Your Computer. In Windbg You Can Add This To Your Symbol Server Search Path With The Command Below, Where C:\symbols Is A Local Cache Directory: .sympath+ SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Alternately, You Can Set The _NT_SYMBOL_PATH Environment Variable To Include Both The Microsoft And Google Symbol Servers - VS, Windbg, And Other Tools Should Both Respect This Environment Variable: _NT_SYMBOL_PATH=SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Note That Symbol Servers Will Let The Debuggers Download Both The PE Files (DLLs And EXEs) And The PDB Files. Chrome Often Loads Third Party Libraries And Partial Symbols For Some Of These Are Also Public. For Example: AMD: Https://download.amd.com/dir/bin Nvidia: Https://driver-symbols.nvidia.com/ Intel: Https://software.intel.com/sites/downloads/symbols/ For Example, For Completeness, The Following Symbol Server Environment Variable Will Resolve All Of The Above Sources - But This Is More Than Is Normally Needed: _NT_SYMBOL_PATH=SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com;SRV\*C:\symbols\*https://download.amd.com/dir/bin;SRV\*C:\symbols\*https://driver-symbols.nvidia.com/;SRV\*C:\symbols\*https://software.intel.com/sites/downloads/symbols/ Source Indexing You Should Set Up Source Indexing In Your Debugger (.srcfix In Windbg, Tools-> Options-> Debugging-> General-> Enable Source Server Support In Visual Studio) So That The Correct Source Files Will Automatically Be Downloaded Based On Information In The Downloaded Symbols. Additionally, You Must Have Python In Your Path In Order For The Command That Fetches Source Files To Succeed; Launching The Debugger From The Same Environment As Where You Build Chromium Is An Easy Way To Ensure It's Present. This Is Highly Recommended When Debugging Released Google Chrome Builds Or Looking At Crash Dumps. Having The Correct Version Of The Source Files Automatically Show Up Saves Significant Time So You Should Definitely Set This. Multi-process Issues Chromium Can Be Challenging To Debug Because Of Its Multi-process Architecture. When You Select Run In The Debugger, Only The Main Browser Process Will Be Debugged. The Code That Actually Renders Web Pages (the Renderer) And The Plugins Will Be In Separate Processes That's Not (yet!) Being Debugged. The ProcessExplorer Tool Has A Process Tree View Where You Can See How These Processes Are Related. You Can Also Get The Process IDs Associated With Each Tab From The Chrome Task Manager (right-click On An Empty Area Of The Window Title Bar To Open). Automatically Attach To Child Processes There Are Two Visual Studio Extensions That Enable The Debugger To Automatically Attach To All Chrome Processes, So You Can Debug All Of Chrome At Once. Microsoft's Child Process Debugging Power Tool Is A Standalone Extension For This, And VsChromium Is Another Option That Bundles Many Other Additional Features. In Addition To Installing One Of These Extensions, You Must Run Visual Studio As Administrator, Or It Will Silently Fail To Attach To Some Of Chrome's Child Processes. Single-process Mode One Way To Debug Issues Is To Run Chromium In Single-process Mode. This Will Allow You To See The Entire State Of The Program Without Extra Work (although It Will Still Have Many Threads). To Use Single-process Mode, Add The Command-line Flag --single-process This Approach Isn't Perfect Because Some Problems Won't Manifest Themselves In This Mode And Some Features Don't Work And Worker Threads Are Still Spawned Into New Processes. Manually Attaching To A Child Process You Can Attach To The Running Child Processes With The Debugger. Select Tools > Attach To Process And Click The Chrome.exe Process You Want To Attach To. Before Attaching, Make Sure You Have Selected Only Native Code When Attaching To The Process This Is Done By Clicking Select... In The Attach To Process Window And Only Checking Native. If You Forget This, It May Attempt To Attach In "WebKit" Mode To Debug JavaScript, And You'll Get An Error Message "An Operation Is Not Legal In The Current State." You Can Now Debug The Two Processes As If They Were One. When You Are Debugging Multiple Processes, Open The Debug > Windows > Processes Window To Switch Between Them. Sometimes You Are Debugging Something That Only Happens On Startup, And Want To See The Child Process As Soon As It Starts. Use: --renderer-startup-dialog --no-sandbox You Have To Disable The Sandbox Or The Dialog Box Will Be Prohibited From Showing. When The Dialog Appears, Visit Tools > Attach To Process And Attach To The Process Showing The Renderer Startup Dialog. Now You're Debugging In The Renderer And Can Continue Execution By Pressing OK In The Dialog. Startup Dialogs Also Exist For Other Child Process Types: --gpu-startup-dialog, --ppapi-startup-dialog, --utility-startup-dialog, --plugin-startup-dialog (for NPAPI). For Utilities, You Can Add A Service Type --utility-startup-dialog=data_decoder.mojom.DataDecoderService. You Can Also Try The Vs-chromium Plug-in To Attach To The Right Processes. Semi-automatically Attaching The Debugger To Child Processes The Following Flags Cause Child Processes To Wait For 60 Seconds In A Busy Loop For A Debugger To Attach To The Process. Once Either Condition Is True, It Continues On; No Exception Is Thrown. --wait-for-debugger-children[=filter] The Filter, If Provided, Will Fire Only If It Matches The --type Parameter To The Process. Values Include Renderer, Plugin (for NPAPI), Ppapi, Gpu-process, And Utility. When Using This Option, It May Be Helpful To Limit The Number Of Renderer Processes Spawned, Using: --renderer-process-limit=1 Image File Execution Options Using Image File Execution Options (IFEO) Will Not Work Because CreateProcess() Returns The Handle To The Debugger Process Instead Of The Intended Child Process. There Are Also Issues With The Sandbox. Time Travel Debugging You Can Do Time Travel Debugging Using WinDbg Preview (must Be Installed From The Microsoft Store). This Lets You Execute A Program Forward And Backwards. After Capturing A Trace, You Can Set Breakpoints And Step Through Code As Normal, But Also Provides 'backwards' Commands (g-, T-, P-) So That You Can Go Back And Forth Through The Execution. It Is Especially Useful To Set Data Breakpoints (ba Command) And Reverse Continuing, So You Can See When A Certain Variable Was Last Changed To Its Current Value. Chromium Specifics: The Type Of Injection The Time Travel Tracer Needs To Perform Is Incompatible With The Chromium Sandbox. In Order To Record A Trace, You'll Need To Run With --no-sandbox. Chromium Cannot Run Elevated With Administrator Privileges, So The "Launch Executable (advance)" Option Won't Work, You'll Need To Attach After The Process Has Already Launched Via The Checkbox In The Bottom Right. If You Need To Record Startup-like Things, You'll Have To Use --{browser,gpu,renderer,utility}-startup-dialog, Then Attach (and Hope The Relevant Code Hasn't Executed Before That Point). JsDbg -- Data Structure Visualization You Can Install JsDbg As A Plugin For WinDbg Or Visual Studio. It Interactively Lets You Look At Data Structures (such As The DOM Tree, Accessibility Tree, Layout Object Tree, And Others) In A Web Browser As You Debug. See The JsDbg Site For Some Screen Shots And Usage Examples. This Also Works When Examining Memory Dumps (though Not Minidumps), And Also Works Together With Time Travel Debugging. Visual Studio Hints Debug Visualizers Chrome's Custom Debug Visualizers Should Be Added To The Pdb Files And Automatically Picked Up By Visual Studio. The Definitions Are In //tools/win/DebugVisualizers If You Need To Modify Them (the BUILD.gn File There Has Additional Instructions). Don't Step Into Trivial Functions The Debugger Can Be Configured To Automatically Not Step Into Functions Based On Regular Expression. Edit Default.natstepfilter In The Following Directory: For Visual Studio 2015: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers (for All Users) Or %USERPROFILE%\My Documents\Visual Studio 2015\Visualizers (for The Current User Only) For Visual Studio 2017 Pro: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Packages\Debugger\Visualizers (for All Users) Or %USERPROFILE%\My Documents\Visual Studio 2017\Visualizers (for The Current User Only) Add Regular Expressions Of Functions To Not Step Into. Remember To Regex-escape And XML-escape Them, E.g. < For < And \. For A Literal Dot. Example: Operator New NoStepInto Operator Delete NoStepInto Std::.* NoStepInto WTF::.*Ptr ::.* NoStepInto This File Is Read At Start Of A Debugging Session (F5), So You Don't Need To Restart Visual Studio After Changing It. More Info: Microsoft Email Thread V8 And Chromium V8 Supports Many Command-line Flags That Are Useful For Debugging. V8 Command-line Flags Can Be Set Via The Chromium Command-line Flag --js-flags; For Instance: Chrome.exe --js-flags="--trace_exception --heap_stats" Note That Some V8 Command-line Flags Exist Only In The Debug Build Of V8. For A List Of All V8 Flags Try: Chrome.exe --js-flags="--help" Graphics Debugging GPU Acceleration Of Rendering Can Be More Easily Debugged With Tools. See: Graphics Debugging In Visual Studio 2013 Graphical Debugging With NVIDIA NSight Debugging On Another Machine Sometimes It's Useful To Debug Installation And Execution On A Machine Other Than Your Primary Build Box. To Run The Installer On Said Other Machine, First Build The Mini_installer Target On Your Main Build Machine (e.g., Autoninja -C Out\Debug Mini_installer). Next, On The Debug Machine: Make The Build Machine's Build Volume Available On The Debug Machine Either By Mounting It Locally (e.g., Z:\) Or By Crafting A UNC Path To It (e.g., \\builder\src) Open Up A Command Prompt And Change To A Local Disk Run Src\tools\win\copy-installer.bat In The Remote Checkout By Way Of The Mount (e.g., Z:\PATHTOCHECKOUT\src\...) Or UNC Path (e.g., \\builder\src\...). This Will Copy The Installer, DLLs, And PDBs Into Your Debug Machine's C:\out Or C:\build (depending On If You're Rocking The Component=shared_library Build Or Not) Run C:\out\Debug\mini_installer.exe With The Flags Of Your Choice To Install Chrome. This Can Take Some Time, Especially On A Slow Machine. Watch The Task Manager And Wait Until Mini_installer.exe Exits Before Trying To Launch Chrome (by Way Of The Shortcut(s) Created By The Installer) For Extra Pleasure, Add C:\out\Debug To Your _NT_SYMBOL_PATH Environment Variable Consider Reading The Documentation At The Top Of Copy-installer.bat To See How You Can Run It. It Tries To Be Smart And Copy The Right Things, But You May Need To Be Explicit (e.g., "copy-installer.bat Out Debug"). It Is Safe To Re-run The Script To Copy Only Modified Files (after A Rebuild, For Example). You Can Also Use The Zip Action Of The Isolate Scripts (tools\mb\mb.py) To Package All The Files For A Target Into A Single Zip File, For Example: Python Tools\mb\mb.py Zip Out/Release Base_unittests Base_unittests.zip Finding All Memory Allocations It Is Possible To Use Heap Snapshots To Get Call Stacks On All Outstanding Allocations That Use The OS Heap. This Works Particularly Well If Heap Snapshots Are Started As Soon As The Chrome Browser Process Is Created, But Before It Starts Running. Details Can Be Found In This Batch File. However, With PartitionAlloc Everywhere Most Chromium Allocations No Longer Use The Windows Heap So This Will Only Find A Subset Of Allocations, Mostly From OS DLLs. Find Memory Leaks Note: As With Heap Snapshots The Utility Of UMDH Is Greatly Reduced Now Because PartitionAlloc Everywhere Has Mostly Replaced The Windows Heap. The Windows Heap Manager Has A Really Useful Debug Flag, Where It Can Be Asked To Capture And Store A Stack Trace With Every Allocation. The Tool To Scrape These Stack Traces Out Of Processes Is UMDH, Which Comes With WinDbg. UMDH Is Great. It Will Capture A Snapshot Of The Heap State As Many Times As You Like, And It'll Do It Fairly Quickly. You Then Run It Again Against Either A Single Snapshot, Or A Pair Of Snapshots, At Which Time It'll Symbolize The Stack Traces And Aggregate Usage Up To Unique Stack Traces. Turning On The User Stack Trace Database For Chrome.exe With Gflags.exe Makes It Run Unbearably Slowly; However, Turning On The User Stack Trace Database On For The Browser Alone Is Just Fine. While It's Possible To Turn On The User Stack Database With The "!gflag" Debugging Extension, It's Too Late To Do This By The Time The Initial Debugger Breakpoint Hits. The Only Reasonable Way To Do This Is To Launch GFlags.exe, Enable The User Stack Trace Database (per Image Below), Launch Chrome Under The Debugger. Set A Breakpont When Chrome.dll Loads With "sxe Ld Chrome.dll". Step Up, To Allow Chrome.dll To Initialize. Disable The Stack Trace Database In GFlags.exe. Continue Chrome, Optionally Detaching The Debugger. Image GFlags.exe Settings For User Mode Stack Trace Database. If You Then Ever Suffer A Browser Memory Leak, You Can Snarf A Dump Of The Process With Umdh -p: > Chrome-browser-leak-umdh-dump.txt Which Can Then Typically Be "trivially" Analyzed To Find The Culprit. Miscellaneous Note That By Default Application Verifier Only Works With Non-official Builds Of Chromium. To Use Application Verifier On Official Builds You Need To Add --disable-features=RendererCodeIntegrity To Avoid Sandbox Crashes In Renderer Processes. See Crbug.com/1004989 For Details. See Also This Page. Application Verifier Is A Free Tool From Microsoft (available As Part Of The Windows SDK) That Can Be Used To Flush Out Programming Errors. Starting With M68 Application Verifier Can Be Enabled For Chrome.exe Without Needing To Disable The Sandbox. After Adding Chrome.exe To The List Of Applications To Be Stressed You Need To Expand The List Of Basics Checks And Disable The Leak Checks. You May Also Need To Disable Handles And Locks Checks Depending On Your Graphics Driver And Specific Chrome Version, But The Eventual Goal Is To Have Chrome Run With Handles And Locks Checks Enabled. When Bugs Are Found Chrome Will Trigger A Breakpoint So Running All Chrome Processes Under A Debugger Is Recommended. Chrome Will Run Much More Slowly Because Application Verifier Puts Every Heap Allocation On A Separate Page. Note That With PartitionAlloc Everywhere Most Chromium Allocations Don't Actually Go Through The Windows Heap And Are Therefore Unaffected By Application Verifier. You Can Check The Undocumented 'Cuzz' Checkbox In Application Verifier To Get The Windows Thread Scheduler To Add Some Extra Randomness In Order To Help Expose Race Conditions In Your Code. To Put A Breakpoint On CreateFile(), Add This Break Point: {,,kernel32.dll}_CreateFileW@28 {,,kernel32.dll} Specifies The DLL (context Operator). _ Prefix Means Extern "C". @28 Postfix Means _stdcall With The Stack Pop At The End Of The Function. I.e. The Number Of Arguments In BYTES. You Can Use DebugView From SysInternals Or Sawbuck To View LOG() Messages That Normally Go To Stderr On POSIX.
The Chromium Projects Home Chromium ChromiumOS Quick links Report bugs Discuss Other sites Chromium Blog Google Chrome Extensions Except as otherwise noted , the content of this page is licensed under a Creative Commons Attribution 2.5 license , and examples are licensed under the BSD License . Privacy Edit this page For Developers > How-Tos > Debugging Chromium on Windows First see get the code for checkout and build instructions. Getting started You can use Visual Studio's built-in debugger or WinDBG to debug Chromium. You don't need to use the IDE to build in order to use the debugger: autoninja is used to build Chromium and most developers invoke it from a command prompt, and then open the IDE for debugging as necessary. To start debugging an already-built executable with Visual Studio just launch Visual Studio (2019 or higher) and select File-> Open-> Project/Solution (Ctrl+Shift+O) and select the executable of interest. This will create a solution with that executable as the 'project'. You can then launch the debugger with F5 or F11 or from the Debug menu. If you right-click on the executable in Solution Explorer and select properties then you can edit things such as the executable path, command-line arguments, and working directory. You can add additional executables to the solution by using File-> Add-> Existing Project and selecting another already-built executable. You can select which one to debug by right-clicking on one of them in Solution Explorer and selecting Set as Startup Project. When your solution file is customized to your taste you can save it to a directory such as out\solutions. Saving it there helps ensure that relative paths to source files, printed from build commands, will correctly identify the source files. The Tools menu can be used to add commands to do things like invoke autoninja to build Chrome, compile the selected source file, or other things. Visual Studio 2017 is not recommended for debugging of Chromium - use a newer version for best performance and stability. symbol_level=2 is the default on Windows and gives full debugging information with types, locals, globals, function names, and source/line information. symbol_level=1 creates smaller PDBs with just function names, and source/line information - source-level debugging is still supported (new from June 2019), but local variables and type information are missing. symbol_level=0 gives extremely limited debugging abilities, mostly just viewing call stacks when Chromium crashes. Browsing source code If you use a solution file generated by gn ( gn gen --ide=vs ) then Intellisense may help you navigate the code. If this doesn't work or if you use a solution created as above then you may want to install VsChromium to help navigate the code, as well as using https://source.chromium.org . Profiles It's a good idea to use a different Chrome profile for your debugging. If you are debugging Google Chrome branded builds, or use a Chromium build as your primary browser, the profiles can collide so you can't run both at once, and your stable browser might see profile versions from the future (Google Chrome and Chromium use different profile directories by default so won't collide). Use the command-line option: --user-data-dir =C:\tmp\my_debug_profile (replace the path as necessary) Using the IDE, go to the Debugging tab of the properties of the chrome project, and set the Command Arguments. Chrome debug log Enable Chrome debug logging to a file by passing --enable-logging --v=1 command-line flags at startup. Debug builds place the chrome_debug.log file in the out\Debug directory. Release builds place the file in the top level of the user data Chromium app directory, which is OS-version-dependent. For more information, see logging and user data directory details. Symbol server If you are debugging official Google Chrome release builds, use the symbol server: https://chromium-browser-symsrv.commondatastorage.googleapis.com In Visual Studio, this goes in Tools > Options under Debugging > Symbols . You should set up a local cache in a empty directory on your computer. In windbg you can add this to your symbol server search path with the command below, where C:\symbols is a local cache directory: .sympath+ SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Alternately, You can set the _NT_SYMBOL_PATH environment variable to include both the Microsoft and Google symbol servers - VS, windbg, and other tools should both respect this environment variable: _NT_SYMBOL_PATH =SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols ;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Note that symbol servers will let the debuggers download both the PE files (DLLs and EXEs) and the PDB files. Chrome often loads third party libraries and partial symbols for some of these are also public. For example: AMD : https://download.amd.com/dir/bin Nvidia : https://driver-symbols.nvidia.com/ Intel : https://software.intel.com/sites/downloads/symbols/ For example, for completeness, the following symbol server environment variable will resolve all of the above sources - but this is more than is normally needed: _NT_SYMBOL_PATH=SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com;SRV\*C:\symbols\*https://download.amd.com/dir/bin;SRV\*C:\symbols\*https://driver-symbols.nvidia.com/;SRV\*C:\symbols\*https://software.intel.com/sites/downloads/symbols/ Source indexing You should set up source indexing in your debugger ( .srcfix in windbg, Tools-> Options-> Debugging-> General-> Enable source server support in Visual Studio) so that the correct source files will automatically be downloaded based on information in the downloaded symbols. Additionally, you must have python in your path in order for the command that fetches source files to succeed; launching the debugger from the same environment as where you build Chromium is an easy way to ensure it's present. This is highly recommended when debugging released Google Chrome builds or looking at crash dumps. Having the correct version of the source files automatically show up saves significant time so you should definitely set this. Multi-process issues Chromium can be challenging to debug because of its multi-process architecture . When you select Run in the debugger, only the main browser process will be debugged. The code that actually renders web pages (the Renderer) and the plugins will be in separate processes that's not (yet!) being debugged. The ProcessExplorer tool has a process tree view where you can see how these processes are related. You can also get the process IDs associated with each tab from the Chrome Task Manager (right-click on an empty area of the window title bar to open). Automatically attach to child processes There are two Visual Studio extensions that enable the debugger to automatically attach to all Chrome processes, so you can debug all of Chrome at once. Microsoft's Child Process Debugging Power Tool is a standalone extension for this, and VsChromium is another option that bundles many other additional features. In addition to installing one of these extensions, you must run Visual Studio as Administrator, or it will silently fail to attach to some of Chrome's child processes. Single-process mode One way to debug issues is to run Chromium in single-process mode. This will allow you to see the entire state of the program without extra work (although it will still have many threads). To use single-process mode, add the command-line flag --single-process This approach isn't perfect because some problems won't manifest themselves in this mode and some features don't work and worker threads are still spawned into new processes. Manually attaching to a child process You can attach to the running child processes with the debugger. Select Tools > Attach to Process and click the chrome.exe process you want to attach to. Before attaching, make sure you have selected only Native code when attaching to the process This is done by clicking Select... in the Attach to Process window and only checking Native. If you forget this, it may attempt to attach in "WebKit" mode to debug JavaScript, and you'll get an error message "An operation is not legal in the current state." You can now debug the two processes as if they were one. When you are debugging multiple processes, open the Debug > Windows > Processes window to switch between them. Sometimes you are debugging something that only happens on startup, and want to see the child process as soon as it starts. Use: --renderer-startup-dialog --no-sandbox You have to disable the sandbox or the dialog box will be prohibited from showing. When the dialog appears, visit Tools > Attach to Process and attach to the process showing the Renderer startup dialog. Now you're debugging in the renderer and can continue execution by pressing OK in the dialog. Startup dialogs also exist for other child process types: --gpu-startup-dialog , --ppapi-startup-dialog , --utility-startup-dialog , --plugin-startup-dialog (for NPAPI). For utilities, you can add a service type --utility-startup-dialog=data_decoder.mojom.DataDecoderService . You can also try the vs-chromium plug-in to attach to the right processes. Semi-automatically attaching the debugger to child processes The following flags cause child processes to wait for 60 seconds in a busy loop for a debugger to attach to the process. Once either condition is true, it continues on; no exception is thrown. --wait-for-debugger-children [=filter] The filter, if provided, will fire only if it matches the --type parameter to the process. Values include renderer , plugin (for NPAPI), ppapi , gpu-process , and utility . When using this option, it may be helpful to limit the number of renderer processes spawned, using: --renderer-process-limit = 1 Image File Execution Options Using Image File Execution Options (IFEO) will not work because CreateProcess() returns the handle to the debugger process instead of the intended child process. There are also issues with the sandbox. Time travel debugging You can do time travel debugging using WinDbg Preview (must be installed from the Microsoft Store). This lets you execute a program forward and backwards. After capturing a trace, you can set breakpoints and step through code as normal, but also provides 'backwards' commands (g-, t-, p-) so that you can go back and forth through the execution. It is especially useful to set data breakpoints ( ba command ) and reverse continuing, so you can see when a certain variable was last changed to its current value. Chromium specifics: The type of injection the time travel tracer needs to perform is incompatible with the Chromium sandbox. In order to record a trace, you'll need to run with --no-sandbox . Chromium cannot run elevated with Administrator privileges, so the "Launch executable (advance)" option won't work, you'll need to attach after the process has already launched via the checkbox in the bottom right. If you need to record startup-like things, you'll have to use --{browser,gpu,renderer,utility}-startup-dialog, then attach (and hope the relevant code hasn't executed before that point). JsDbg -- data structure visualization You can install JsDbg as a plugin for WinDbg or Visual Studio . It interactively lets you look at data structures (such as the DOM tree, Accessibility tree, layout object tree, and others) in a web browser as you debug. See the JsDbg site for some screen shots and usage examples. This also works when examining memory dumps (though not minidumps), and also works together with time travel debugging. Visual Studio hints Debug visualizers Chrome's custom debug visualizers should be added to the pdb files and automatically picked up by Visual Studio. The definitions are in //tools/win/DebugVisualizers if you need to modify them (the BUILD.gn file there has additional instructions). Don't step into trivial functions The debugger can be configured to automatically not step into functions based on regular expression. Edit default.natstepfilter in the following directory: For Visual Studio 2015: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers (for all users) or %USERPROFILE%\My Documents\Visual Studio 2015\Visualizers (for the current user only) For Visual Studio 2017 Pro: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Packages\Debugger\Visualizers (for all users) or %USERPROFILE%\My Documents\Visual Studio 2017\Visualizers (for the current user only) Add regular expressions of functions to not step into. Remember to regex-escape and XML-escape them, e.g. < for < and \. for a literal dot. Example: < Function > < Name > operator new </ Name > < Action > NoStepInto </ Action > </ Function > < Function > < Name > operator delete </ Name > < Action > NoStepInto </ Action > </ Function > <!-- Skip everything in std --> < Function > < Name > std::.* </ Name > < Action > NoStepInto </ Action > </ Function > <!-- all methods on WebKit OwnPtr and variants, ... WTF::*Ptr<*>::* --> < Function > < Name > WTF::.*Ptr<.*>::.* </ Name > < Action > NoStepInto </ Action > </ Function > This file is read at start of a debugging session (F5), so you don't need to restart Visual Studio after changing it. More info: Microsoft email thread V8 and Chromium V8 supports many command-line flags that are useful for debugging. V8 command-line flags can be set via the Chromium command-line flag --js-flags; for instance: chrome.exe --js-flags= "--trace_exception --heap_stats" Note that some V8 command-line flags exist only in the debug build of V8. For a list of all V8 flags try: chrome.exe --js-flags= "--help" Graphics debugging GPU Acceleration of rendering can be more easily debugged with tools. See: Graphics Debugging in Visual Studio 2013 Graphical debugging with NVIDIA NSight Debugging on another machine Sometimes it's useful to debug installation and execution on a machine other than your primary build box. To run the installer on said other machine, first build the mini_installer target on your main build machine (e.g., autoninja -C out\Debug mini_installer). Next, on the debug machine: Make the build machine's build volume available on the debug machine either by mounting it locally (e.g., Z:\) or by crafting a UNC path to it (e.g., \\builder\src) Open up a command prompt and change to a local disk Run src\tools\win\ copy-installer.bat in the remote checkout by way of the mount (e.g., Z:\PATHTOCHECKOUT\src\...) or UNC path (e.g., \\builder\src\...). This will copy the installer, DLLs, and PDBs into your debug machine's C:\out or C:\build (depending on if you're rocking the component=shared_library build or not) Run C:\out\Debug\mini_installer.exe with the flags of your choice to install Chrome. This can take some time, especially on a slow machine. Watch the Task Manager and wait until mini_installer.exe exits before trying to launch Chrome (by way of the shortcut(s) created by the installer) For extra pleasure, add C:\out\Debug to your _NT_SYMBOL_PATH environment variable Consider reading the documentation at the top of copy-installer.bat to see how you can run it. It tries to be smart and copy the right things, but you may need to be explicit (e.g., "copy-installer.bat out Debug"). It is safe to re-run the script to copy only modified files (after a rebuild, for example). You can also use the zip action of the isolate scripts (tools\mb\mb.py) to package all the files for a target into a single zip file, for example: python tools\mb\mb.py zip out/Release base_unittests base_unittests. zip Finding all memory allocations It is possible to use Heap Snapshots to get call stacks on all outstanding allocations that use the OS heap. This works particularly well if heap snapshots are started as soon as the Chrome browser process is created, but before it starts running. Details can be found in this batch file . However, with PartitionAlloc Everywhere most Chromium allocations no longer use the Windows heap so this will only find a subset of allocations, mostly from OS DLLs. Find memory leaks Note: as with Heap Snapshots the utility of UMDH is greatly reduced now because PartitionAlloc Everywhere has mostly replaced the Windows heap. The Windows heap manager has a really useful debug flag, where it can be asked to capture and store a stack trace with every allocation. The tool to scrape these stack traces out of processes is UMDH, which comes with WinDbg . UMDH is great. It will capture a snapshot of the heap state as many times as you like, and it'll do it fairly quickly. You then run it again against either a single snapshot, or a pair of snapshots, at which time it'll symbolize the stack traces and aggregate usage up to unique stack traces. Turning on the user stack trace database for chrome.exe with gflags.exe makes it run unbearably slowly; however, turning on the user stack trace database on for the browser alone is just fine. While it's possible to turn on the user stack database with the "!gflag" debugging extension, it's too late to do this by the time the initial debugger breakpoint hits. The only reasonable way to do this is to Launch GFlags.exe, Enable the user stack trace database (per image below), Launch Chrome under the debugger. Set a breakpont when chrome.dll loads with "sxe ld chrome.dll". Step up, to allow Chrome.dll to initialize. Disable the stack trace database in GFlags.exe. Continue chrome, optionally detaching the debugger. GFlags.exe settings for user mode stack trace database. If you then ever suffer a browser memory leak, you can snarf a dump of the process with umdh - p :<my browser pid> > chrome-browser-leak-umdh-dump.txt which can then typically be "trivially" analyzed to find the culprit. Miscellaneous Note that by default Application Verifier only works with non-official builds of Chromium. To use Application Verifier on official builds you need to add --disable-features=RendererCodeIntegrity to avoid sandbox crashes in renderer processes. See crbug.com/1004989 for details. See also this page . Application Verifier is a free tool from Microsoft (available as part of the Windows SDK) that can be used to flush out programming errors. Starting with M68 Application Verifier can be enabled for chrome.exe without needing to disable the sandbox. After adding chrome.exe to the list of applications to be stressed you need to expand the list of Basics checks and disable the Leak checks. You may also need to disable Handles and Locks checks depending on your graphics driver and specific Chrome version, but the eventual goal is to have Chrome run with Handles and Locks checks enabled. When bugs are found Chrome will trigger a breakpoint so running all Chrome processes under a debugger is recommended. Chrome will run much more slowly because Application Verifier puts every heap allocation on a separate page. Note that with PartitionAlloc Everywhere most Chromium allocations don't actually go through the Windows heap and are therefore unaffected by Application Verifier. You can check the undocumented 'Cuzz' checkbox in Application Verifier to get the Windows thread scheduler to add some extra randomness in order to help expose race conditions in your code. To put a breakpoint on CreateFile(), add this break point: {,,kernel32.dll}_CreateFileW@28 {,,kernel32.dll} specifies the DLL (context operator). _ prefix means extern "C". @28 postfix means _stdcall with the stack pop at the end of the function. i.e. the number of arguments in BYTES. You can use DebugView from SysInternals or sawbuck to view LOG() messages that normally go to stderr on POSIX.
“The Chromium Logo The Chromium Projects Home Chromium ChromiumOS Quick Links Report Bugs Discuss Other Sites Chromium Blog Google Chrome Extensions Except As Otherwise Noted, The Content Of This Page Is Licensed Under A Creative Commons Attribution 2.5 License, And Examples Are Licensed Under The BSD License. Privacy Edit This Page For Developers > How-Tos > Debugging Chromium On Windows First See Get The Code For Checkout And Build Instructions. Getting Started You Can Use Visual Studio's Built-in Debugger Or WinDBG To Debug Chromium. You Don't Need To Use The IDE To Build In Order To Use The Debugger: Autoninja Is Used To Build Chromium And Most Developers Invoke It From A Command Prompt, And Then Open The IDE For Debugging As Necessary. To Start Debugging An Already-built Executable With Visual Studio Just Launch Visual Studio (2019 Or Higher) And Select File-> Open-> Project/Solution (Ctrl+Shift+O) And Select The Executable Of Interest. This Will Create A Solution With That Executable As The 'project'. You Can Then Launch The Debugger With F5 Or F11 Or From The Debug Menu. If You Right-click On The Executable In Solution Explorer And Select Properties Then You Can Edit Things Such As The Executable Path, Command-line Arguments, And Working Directory. You Can Add Additional Executables To The Solution By Using File-> Add-> Existing Project And Selecting Another Already-built Executable. You Can Select Which One To Debug By Right-clicking On One Of Them In Solution Explorer And Selecting Set As Startup Project. When Your Solution File Is Customized To Your Taste You Can Save It To A Directory Such As Out\solutions. Saving It There Helps Ensure That Relative Paths To Source Files, Printed From Build Commands, Will Correctly Identify The Source Files. The Tools Menu Can Be Used To Add Commands To Do Things Like Invoke Autoninja To Build Chrome, Compile The Selected Source File, Or Other Things. Visual Studio 2017 Is Not Recommended For Debugging Of Chromium - Use A Newer Version For Best Performance And Stability. Symbol_level=2 Is The Default On Windows And Gives Full Debugging Information With Types, Locals, Globals, Function Names, And Source/line Information. Symbol_level=1 Creates Smaller PDBs With Just Function Names, And Source/line Information - Source-level Debugging Is Still Supported (new From June 2019), But Local Variables And Type Information Are Missing. Symbol_level=0 Gives Extremely Limited Debugging Abilities, Mostly Just Viewing Call Stacks When Chromium Crashes. Browsing Source Code If You Use A Solution File Generated By Gn (gn Gen --ide=vs) Then Intellisense May Help You Navigate The Code. If This Doesn't Work Or If You Use A Solution Created As Above Then You May Want To Install VsChromium To Help Navigate The Code, As Well As Using Https://source.chromium.org. Profiles It's A Good Idea To Use A Different Chrome Profile For Your Debugging. If You Are Debugging Google Chrome Branded Builds, Or Use A Chromium Build As Your Primary Browser, The Profiles Can Collide So You Can't Run Both At Once, And Your Stable Browser Might See Profile Versions From The Future (Google Chrome And Chromium Use Different Profile Directories By Default So Won't Collide). Use The Command-line Option: --user-data-dir=C:\tmp\my_debug_profile (replace The Path As Necessary) Using The IDE, Go To The Debugging Tab Of The Properties Of The Chrome Project, And Set The Command Arguments. Chrome Debug Log Enable Chrome Debug Logging To A File By Passing --enable-logging --v=1 Command-line Flags At Startup. Debug Builds Place The Chrome_debug.log File In The Out\Debug Directory. Release Builds Place The File In The Top Level Of The User Data Chromium App Directory, Which Is OS-version-dependent. For More Information, See Logging And User Data Directory Details. Symbol Server If You Are Debugging Official Google Chrome Release Builds, Use The Symbol Server: Https://chromium-browser-symsrv.commondatastorage.googleapis.com In Visual Studio, This Goes In Tools > Options Under Debugging > Symbols. You Should Set Up A Local Cache In A Empty Directory On Your Computer. In Windbg You Can Add This To Your Symbol Server Search Path With The Command Below, Where C:\symbols Is A Local Cache Directory: .sympath+ SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Alternately, You Can Set The _NT_SYMBOL_PATH Environment Variable To Include Both The Microsoft And Google Symbol Servers - VS, Windbg, And Other Tools Should Both Respect This Environment Variable: _NT_SYMBOL_PATH=SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Note That Symbol Servers Will Let The Debuggers Download Both The PE Files (DLLs And EXEs) And The PDB Files. Chrome Often Loads Third Party Libraries And Partial Symbols For Some Of These Are Also Public. For Example: AMD: Https://download.amd.com/dir/bin Nvidia: Https://driver-symbols.nvidia.com/ Intel: Https://software.intel.com/sites/downloads/symbols/ For Example, For Completeness, The Following Symbol Server Environment Variable Will Resolve All Of The Above Sources - But This Is More Than Is Normally Needed: _NT_SYMBOL_PATH=SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com;SRV\*C:\symbols\*https://download.amd.com/dir/bin;SRV\*C:\symbols\*https://driver-symbols.nvidia.com/;SRV\*C:\symbols\*https://software.intel.com/sites/downloads/symbols/ Source Indexing You Should Set Up Source Indexing In Your Debugger (.srcfix In Windbg, Tools-> Options-> Debugging-> General-> Enable Source Server Support In Visual Studio) So That The Correct Source Files Will Automatically Be Downloaded Based On Information In The Downloaded Symbols. Additionally, You Must Have Python In Your Path In Order For The Command That Fetches Source Files To Succeed; Launching The Debugger From The Same Environment As Where You Build Chromium Is An Easy Way To Ensure It's Present. This Is Highly Recommended When Debugging Released Google Chrome Builds Or Looking At Crash Dumps. Having The Correct Version Of The Source Files Automatically Show Up Saves Significant Time So You Should Definitely Set This. Multi-process Issues Chromium Can Be Challenging To Debug Because Of Its Multi-process Architecture. When You Select Run In The Debugger, Only The Main Browser Process Will Be Debugged. The Code That Actually Renders Web Pages (the Renderer) And The Plugins Will Be In Separate Processes That's Not (yet!) Being Debugged. The ProcessExplorer Tool Has A Process Tree View Where You Can See How These Processes Are Related. You Can Also Get The Process IDs Associated With Each Tab From The Chrome Task Manager (right-click On An Empty Area Of The Window Title Bar To Open). Automatically Attach To Child Processes There Are Two Visual Studio Extensions That Enable The Debugger To Automatically Attach To All Chrome Processes, So You Can Debug All Of Chrome At Once. Microsoft's Child Process Debugging Power Tool Is A Standalone Extension For This, And VsChromium Is Another Option That Bundles Many Other Additional Features. In Addition To Installing One Of These Extensions, You Must Run Visual Studio As Administrator, Or It Will Silently Fail To Attach To Some Of Chrome's Child Processes. Single-process Mode One Way To Debug Issues Is To Run Chromium In Single-process Mode. This Will Allow You To See The Entire State Of The Program Without Extra Work (although It Will Still Have Many Threads). To Use Single-process Mode, Add The Command-line Flag --single-process This Approach Isn't Perfect Because Some Problems Won't Manifest Themselves In This Mode And Some Features Don't Work And Worker Threads Are Still Spawned Into New Processes. Manually Attaching To A Child Process You Can Attach To The Running Child Processes With The Debugger. Select Tools > Attach To Process And Click The Chrome.exe Process You Want To Attach To. Before Attaching, Make Sure You Have Selected Only Native Code When Attaching To The Process This Is Done By Clicking Select... In The Attach To Process Window And Only Checking Native. If You Forget This, It May Attempt To Attach In "WebKit" Mode To Debug JavaScript, And You'll Get An Error Message "An Operation Is Not Legal In The Current State." You Can Now Debug The Two Processes As If They Were One. When You Are Debugging Multiple Processes, Open The Debug > Windows > Processes Window To Switch Between Them. Sometimes You Are Debugging Something That Only Happens On Startup, And Want To See The Child Process As Soon As It Starts. Use: --renderer-startup-dialog --no-sandbox You Have To Disable The Sandbox Or The Dialog Box Will Be Prohibited From Showing. When The Dialog Appears, Visit Tools > Attach To Process And Attach To The Process Showing The Renderer Startup Dialog. Now You're Debugging In The Renderer And Can Continue Execution By Pressing OK In The Dialog. Startup Dialogs Also Exist For Other Child Process Types: --gpu-startup-dialog, --ppapi-startup-dialog, --utility-startup-dialog, --plugin-startup-dialog (for NPAPI). For Utilities, You Can Add A Service Type --utility-startup-dialog=data_decoder.mojom.DataDecoderService. You Can Also Try The Vs-chromium Plug-in To Attach To The Right Processes. Semi-automatically Attaching The Debugger To Child Processes The Following Flags Cause Child Processes To Wait For 60 Seconds In A Busy Loop For A Debugger To Attach To The Process. Once Either Condition Is True, It Continues On; No Exception Is Thrown. --wait-for-debugger-children[=filter] The Filter, If Provided, Will Fire Only If It Matches The --type Parameter To The Process. Values Include Renderer, Plugin (for NPAPI), Ppapi, Gpu-process, And Utility. When Using This Option, It May Be Helpful To Limit The Number Of Renderer Processes Spawned, Using: --renderer-process-limit=1 Image File Execution Options Using Image File Execution Options (IFEO) Will Not Work Because CreateProcess() Returns The Handle To The Debugger Process Instead Of The Intended Child Process. There Are Also Issues With The Sandbox. Time Travel Debugging You Can Do Time Travel Debugging Using WinDbg Preview (must Be Installed From The Microsoft Store). This Lets You Execute A Program Forward And Backwards. After Capturing A Trace, You Can Set Breakpoints And Step Through Code As Normal, But Also Provides 'backwards' Commands (g-, T-, P-) So That You Can Go Back And Forth Through The Execution. It Is Especially Useful To Set Data Breakpoints (ba Command) And Reverse Continuing, So You Can See When A Certain Variable Was Last Changed To Its Current Value. Chromium Specifics: The Type Of Injection The Time Travel Tracer Needs To Perform Is Incompatible With The Chromium Sandbox. In Order To Record A Trace, You'll Need To Run With --no-sandbox. Chromium Cannot Run Elevated With Administrator Privileges, So The "Launch Executable (advance)" Option Won't Work, You'll Need To Attach After The Process Has Already Launched Via The Checkbox In The Bottom Right. If You Need To Record Startup-like Things, You'll Have To Use --{browser,gpu,renderer,utility}-startup-dialog, Then Attach (and Hope The Relevant Code Hasn't Executed Before That Point). JsDbg -- Data Structure Visualization You Can Install JsDbg As A Plugin For WinDbg Or Visual Studio. It Interactively Lets You Look At Data Structures (such As The DOM Tree, Accessibility Tree, Layout Object Tree, And Others) In A Web Browser As You Debug. See The JsDbg Site For Some Screen Shots And Usage Examples. This Also Works When Examining Memory Dumps (though Not Minidumps), And Also Works Together With Time Travel Debugging. Visual Studio Hints Debug Visualizers Chrome's Custom Debug Visualizers Should Be Added To The Pdb Files And Automatically Picked Up By Visual Studio. The Definitions Are In //tools/win/DebugVisualizers If You Need To Modify Them (the BUILD.gn File There Has Additional Instructions). Don't Step Into Trivial Functions The Debugger Can Be Configured To Automatically Not Step Into Functions Based On Regular Expression. Edit Default.natstepfilter In The Following Directory: For Visual Studio 2015: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers (for All Users) Or %USERPROFILE%\My Documents\Visual Studio 2015\Visualizers (for The Current User Only) For Visual Studio 2017 Pro: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Packages\Debugger\Visualizers (for All Users) Or %USERPROFILE%\My Documents\Visual Studio 2017\Visualizers (for The Current User Only) Add Regular Expressions Of Functions To Not Step Into. Remember To Regex-escape And XML-escape Them, E.g. < For < And \. For A Literal Dot. Example: Operator New NoStepInto Operator Delete NoStepInto Std::.* NoStepInto WTF::.*Ptr ::.* NoStepInto This File Is Read At Start Of A Debugging Session (F5), So You Don't Need To Restart Visual Studio After Changing It. More Info: Microsoft Email Thread V8 And Chromium V8 Supports Many Command-line Flags That Are Useful For Debugging. V8 Command-line Flags Can Be Set Via The Chromium Command-line Flag --js-flags; For Instance: Chrome.exe --js-flags="--trace_exception --heap_stats" Note That Some V8 Command-line Flags Exist Only In The Debug Build Of V8. For A List Of All V8 Flags Try: Chrome.exe --js-flags="--help" Graphics Debugging GPU Acceleration Of Rendering Can Be More Easily Debugged With Tools. See: Graphics Debugging In Visual Studio 2013 Graphical Debugging With NVIDIA NSight Debugging On Another Machine Sometimes It's Useful To Debug Installation And Execution On A Machine Other Than Your Primary Build Box. To Run The Installer On Said Other Machine, First Build The Mini_installer Target On Your Main Build Machine (e.g., Autoninja -C Out\Debug Mini_installer). Next, On The Debug Machine: Make The Build Machine's Build Volume Available On The Debug Machine Either By Mounting It Locally (e.g., Z:\) Or By Crafting A UNC Path To It (e.g., \\builder\src) Open Up A Command Prompt And Change To A Local Disk Run Src\tools\win\copy-installer.bat In The Remote Checkout By Way Of The Mount (e.g., Z:\PATHTOCHECKOUT\src\...) Or UNC Path (e.g., \\builder\src\...). This Will Copy The Installer, DLLs, And PDBs Into Your Debug Machine's C:\out Or C:\build (depending On If You're Rocking The Component=shared_library Build Or Not) Run C:\out\Debug\mini_installer.exe With The Flags Of Your Choice To Install Chrome. This Can Take Some Time, Especially On A Slow Machine. Watch The Task Manager And Wait Until Mini_installer.exe Exits Before Trying To Launch Chrome (by Way Of The Shortcut(s) Created By The Installer) For Extra Pleasure, Add C:\out\Debug To Your _NT_SYMBOL_PATH Environment Variable Consider Reading The Documentation At The Top Of Copy-installer.bat To See How You Can Run It. It Tries To Be Smart And Copy The Right Things, But You May Need To Be Explicit (e.g., "copy-installer.bat Out Debug"). It Is Safe To Re-run The Script To Copy Only Modified Files (after A Rebuild, For Example). You Can Also Use The Zip Action Of The Isolate Scripts (tools\mb\mb.py) To Package All The Files For A Target Into A Single Zip File, For Example: Python Tools\mb\mb.py Zip Out/Release Base_unittests Base_unittests.zip Finding All Memory Allocations It Is Possible To Use Heap Snapshots To Get Call Stacks On All Outstanding Allocations That Use The OS Heap. This Works Particularly Well If Heap Snapshots Are Started As Soon As The Chrome Browser Process Is Created, But Before It Starts Running. Details Can Be Found In This Batch File. However, With PartitionAlloc Everywhere Most Chromium Allocations No Longer Use The Windows Heap So This Will Only Find A Subset Of Allocations, Mostly From OS DLLs. Find Memory Leaks Note: As With Heap Snapshots The Utility Of UMDH Is Greatly Reduced Now Because PartitionAlloc Everywhere Has Mostly Replaced The Windows Heap. The Windows Heap Manager Has A Really Useful Debug Flag, Where It Can Be Asked To Capture And Store A Stack Trace With Every Allocation. The Tool To Scrape These Stack Traces Out Of Processes Is UMDH, Which Comes With WinDbg. UMDH Is Great. It Will Capture A Snapshot Of The Heap State As Many Times As You Like, And It'll Do It Fairly Quickly. You Then Run It Again Against Either A Single Snapshot, Or A Pair Of Snapshots, At Which Time It'll Symbolize The Stack Traces And Aggregate Usage Up To Unique Stack Traces. Turning On The User Stack Trace Database For Chrome.exe With Gflags.exe Makes It Run Unbearably Slowly; However, Turning On The User Stack Trace Database On For The Browser Alone Is Just Fine. While It's Possible To Turn On The User Stack Database With The "!gflag" Debugging Extension, It's Too Late To Do This By The Time The Initial Debugger Breakpoint Hits. The Only Reasonable Way To Do This Is To Launch GFlags.exe, Enable The User Stack Trace Database (per Image Below), Launch Chrome Under The Debugger. Set A Breakpont When Chrome.dll Loads With "sxe Ld Chrome.dll". Step Up, To Allow Chrome.dll To Initialize. Disable The Stack Trace Database In GFlags.exe. Continue Chrome, Optionally Detaching The Debugger. Image GFlags.exe Settings For User Mode Stack Trace Database. If You Then Ever Suffer A Browser Memory Leak, You Can Snarf A Dump Of The Process With Umdh -p: > Chrome-browser-leak-umdh-dump.txt Which Can Then Typically Be "trivially" Analyzed To Find The Culprit. Miscellaneous Note That By Default Application Verifier Only Works With Non-official Builds Of Chromium. To Use Application Verifier On Official Builds You Need To Add --disable-features=RendererCodeIntegrity To Avoid Sandbox Crashes In Renderer Processes. See Crbug.com/1004989 For Details. See Also This Page. Application Verifier Is A Free Tool From Microsoft (available As Part Of The Windows SDK) That Can Be Used To Flush Out Programming Errors. Starting With M68 Application Verifier Can Be Enabled For Chrome.exe Without Needing To Disable The Sandbox. After Adding Chrome.exe To The List Of Applications To Be Stressed You Need To Expand The List Of Basics Checks And Disable The Leak Checks. You May Also Need To Disable Handles And Locks Checks Depending On Your Graphics Driver And Specific Chrome Version, But The Eventual Goal Is To Have Chrome Run With Handles And Locks Checks Enabled. When Bugs Are Found Chrome Will Trigger A Breakpoint So Running All Chrome Processes Under A Debugger Is Recommended. Chrome Will Run Much More Slowly Because Application Verifier Puts Every Heap Allocation On A Separate Page. Note That With PartitionAlloc Everywhere Most Chromium Allocations Don't Actually Go Through The Windows Heap And Are Therefore Unaffected By Application Verifier. You Can Check The Undocumented 'Cuzz' Checkbox In Application Verifier To Get The Windows Thread Scheduler To Add Some Extra Randomness In Order To Help Expose Race Conditions In Your Code. To Put A Breakpoint On CreateFile(), Add This Break Point: {,,kernel32.dll}_CreateFileW@28 {,,kernel32.dll} Specifies The DLL (context Operator). _ Prefix Means Extern "C". @28 Postfix Means _stdcall With The Stack Pop At The End Of The Function. I.e. The Number Of Arguments In BYTES. You Can Use DebugView From SysInternals Or Sawbuck To View LOG() Messages That Normally Go To Stderr On POSIX.” Metadata:
- Title: ➤ The Chromium Logo The Chromium Projects Home Chromium ChromiumOS Quick Links Report Bugs Discuss Other Sites Chromium Blog Google Chrome Extensions Except As Otherwise Noted, The Content Of This Page Is Licensed Under A Creative Commons Attribution 2.5 License, And Examples Are Licensed Under The BSD License. Privacy Edit This Page For Developers > How-Tos > Debugging Chromium On Windows First See Get The Code For Checkout And Build Instructions. Getting Started You Can Use Visual Studio's Built-in Debugger Or WinDBG To Debug Chromium. You Don't Need To Use The IDE To Build In Order To Use The Debugger: Autoninja Is Used To Build Chromium And Most Developers Invoke It From A Command Prompt, And Then Open The IDE For Debugging As Necessary. To Start Debugging An Already-built Executable With Visual Studio Just Launch Visual Studio (2019 Or Higher) And Select File-> Open-> Project/Solution (Ctrl+Shift+O) And Select The Executable Of Interest. This Will Create A Solution With That Executable As The 'project'. You Can Then Launch The Debugger With F5 Or F11 Or From The Debug Menu. If You Right-click On The Executable In Solution Explorer And Select Properties Then You Can Edit Things Such As The Executable Path, Command-line Arguments, And Working Directory. You Can Add Additional Executables To The Solution By Using File-> Add-> Existing Project And Selecting Another Already-built Executable. You Can Select Which One To Debug By Right-clicking On One Of Them In Solution Explorer And Selecting Set As Startup Project. When Your Solution File Is Customized To Your Taste You Can Save It To A Directory Such As Out\solutions. Saving It There Helps Ensure That Relative Paths To Source Files, Printed From Build Commands, Will Correctly Identify The Source Files. The Tools Menu Can Be Used To Add Commands To Do Things Like Invoke Autoninja To Build Chrome, Compile The Selected Source File, Or Other Things. Visual Studio 2017 Is Not Recommended For Debugging Of Chromium - Use A Newer Version For Best Performance And Stability. Symbol_level=2 Is The Default On Windows And Gives Full Debugging Information With Types, Locals, Globals, Function Names, And Source/line Information. Symbol_level=1 Creates Smaller PDBs With Just Function Names, And Source/line Information - Source-level Debugging Is Still Supported (new From June 2019), But Local Variables And Type Information Are Missing. Symbol_level=0 Gives Extremely Limited Debugging Abilities, Mostly Just Viewing Call Stacks When Chromium Crashes. Browsing Source Code If You Use A Solution File Generated By Gn (gn Gen --ide=vs) Then Intellisense May Help You Navigate The Code. If This Doesn't Work Or If You Use A Solution Created As Above Then You May Want To Install VsChromium To Help Navigate The Code, As Well As Using Https://source.chromium.org. Profiles It's A Good Idea To Use A Different Chrome Profile For Your Debugging. If You Are Debugging Google Chrome Branded Builds, Or Use A Chromium Build As Your Primary Browser, The Profiles Can Collide So You Can't Run Both At Once, And Your Stable Browser Might See Profile Versions From The Future (Google Chrome And Chromium Use Different Profile Directories By Default So Won't Collide). Use The Command-line Option: --user-data-dir=C:\tmp\my_debug_profile (replace The Path As Necessary) Using The IDE, Go To The Debugging Tab Of The Properties Of The Chrome Project, And Set The Command Arguments. Chrome Debug Log Enable Chrome Debug Logging To A File By Passing --enable-logging --v=1 Command-line Flags At Startup. Debug Builds Place The Chrome_debug.log File In The Out\Debug Directory. Release Builds Place The File In The Top Level Of The User Data Chromium App Directory, Which Is OS-version-dependent. For More Information, See Logging And User Data Directory Details. Symbol Server If You Are Debugging Official Google Chrome Release Builds, Use The Symbol Server: Https://chromium-browser-symsrv.commondatastorage.googleapis.com In Visual Studio, This Goes In Tools > Options Under Debugging > Symbols. You Should Set Up A Local Cache In A Empty Directory On Your Computer. In Windbg You Can Add This To Your Symbol Server Search Path With The Command Below, Where C:\symbols Is A Local Cache Directory: .sympath+ SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Alternately, You Can Set The _NT_SYMBOL_PATH Environment Variable To Include Both The Microsoft And Google Symbol Servers - VS, Windbg, And Other Tools Should Both Respect This Environment Variable: _NT_SYMBOL_PATH=SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Note That Symbol Servers Will Let The Debuggers Download Both The PE Files (DLLs And EXEs) And The PDB Files. Chrome Often Loads Third Party Libraries And Partial Symbols For Some Of These Are Also Public. For Example: AMD: Https://download.amd.com/dir/bin Nvidia: Https://driver-symbols.nvidia.com/ Intel: Https://software.intel.com/sites/downloads/symbols/ For Example, For Completeness, The Following Symbol Server Environment Variable Will Resolve All Of The Above Sources - But This Is More Than Is Normally Needed: _NT_SYMBOL_PATH=SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com;SRV\*C:\symbols\*https://download.amd.com/dir/bin;SRV\*C:\symbols\*https://driver-symbols.nvidia.com/;SRV\*C:\symbols\*https://software.intel.com/sites/downloads/symbols/ Source Indexing You Should Set Up Source Indexing In Your Debugger (.srcfix In Windbg, Tools-> Options-> Debugging-> General-> Enable Source Server Support In Visual Studio) So That The Correct Source Files Will Automatically Be Downloaded Based On Information In The Downloaded Symbols. Additionally, You Must Have Python In Your Path In Order For The Command That Fetches Source Files To Succeed; Launching The Debugger From The Same Environment As Where You Build Chromium Is An Easy Way To Ensure It's Present. This Is Highly Recommended When Debugging Released Google Chrome Builds Or Looking At Crash Dumps. Having The Correct Version Of The Source Files Automatically Show Up Saves Significant Time So You Should Definitely Set This. Multi-process Issues Chromium Can Be Challenging To Debug Because Of Its Multi-process Architecture. When You Select Run In The Debugger, Only The Main Browser Process Will Be Debugged. The Code That Actually Renders Web Pages (the Renderer) And The Plugins Will Be In Separate Processes That's Not (yet!) Being Debugged. The ProcessExplorer Tool Has A Process Tree View Where You Can See How These Processes Are Related. You Can Also Get The Process IDs Associated With Each Tab From The Chrome Task Manager (right-click On An Empty Area Of The Window Title Bar To Open). Automatically Attach To Child Processes There Are Two Visual Studio Extensions That Enable The Debugger To Automatically Attach To All Chrome Processes, So You Can Debug All Of Chrome At Once. Microsoft's Child Process Debugging Power Tool Is A Standalone Extension For This, And VsChromium Is Another Option That Bundles Many Other Additional Features. In Addition To Installing One Of These Extensions, You Must Run Visual Studio As Administrator, Or It Will Silently Fail To Attach To Some Of Chrome's Child Processes. Single-process Mode One Way To Debug Issues Is To Run Chromium In Single-process Mode. This Will Allow You To See The Entire State Of The Program Without Extra Work (although It Will Still Have Many Threads). To Use Single-process Mode, Add The Command-line Flag --single-process This Approach Isn't Perfect Because Some Problems Won't Manifest Themselves In This Mode And Some Features Don't Work And Worker Threads Are Still Spawned Into New Processes. Manually Attaching To A Child Process You Can Attach To The Running Child Processes With The Debugger. Select Tools > Attach To Process And Click The Chrome.exe Process You Want To Attach To. Before Attaching, Make Sure You Have Selected Only Native Code When Attaching To The Process This Is Done By Clicking Select... In The Attach To Process Window And Only Checking Native. If You Forget This, It May Attempt To Attach In "WebKit" Mode To Debug JavaScript, And You'll Get An Error Message "An Operation Is Not Legal In The Current State." You Can Now Debug The Two Processes As If They Were One. When You Are Debugging Multiple Processes, Open The Debug > Windows > Processes Window To Switch Between Them. Sometimes You Are Debugging Something That Only Happens On Startup, And Want To See The Child Process As Soon As It Starts. Use: --renderer-startup-dialog --no-sandbox You Have To Disable The Sandbox Or The Dialog Box Will Be Prohibited From Showing. When The Dialog Appears, Visit Tools > Attach To Process And Attach To The Process Showing The Renderer Startup Dialog. Now You're Debugging In The Renderer And Can Continue Execution By Pressing OK In The Dialog. Startup Dialogs Also Exist For Other Child Process Types: --gpu-startup-dialog, --ppapi-startup-dialog, --utility-startup-dialog, --plugin-startup-dialog (for NPAPI). For Utilities, You Can Add A Service Type --utility-startup-dialog=data_decoder.mojom.DataDecoderService. You Can Also Try The Vs-chromium Plug-in To Attach To The Right Processes. Semi-automatically Attaching The Debugger To Child Processes The Following Flags Cause Child Processes To Wait For 60 Seconds In A Busy Loop For A Debugger To Attach To The Process. Once Either Condition Is True, It Continues On; No Exception Is Thrown. --wait-for-debugger-children[=filter] The Filter, If Provided, Will Fire Only If It Matches The --type Parameter To The Process. Values Include Renderer, Plugin (for NPAPI), Ppapi, Gpu-process, And Utility. When Using This Option, It May Be Helpful To Limit The Number Of Renderer Processes Spawned, Using: --renderer-process-limit=1 Image File Execution Options Using Image File Execution Options (IFEO) Will Not Work Because CreateProcess() Returns The Handle To The Debugger Process Instead Of The Intended Child Process. There Are Also Issues With The Sandbox. Time Travel Debugging You Can Do Time Travel Debugging Using WinDbg Preview (must Be Installed From The Microsoft Store). This Lets You Execute A Program Forward And Backwards. After Capturing A Trace, You Can Set Breakpoints And Step Through Code As Normal, But Also Provides 'backwards' Commands (g-, T-, P-) So That You Can Go Back And Forth Through The Execution. It Is Especially Useful To Set Data Breakpoints (ba Command) And Reverse Continuing, So You Can See When A Certain Variable Was Last Changed To Its Current Value. Chromium Specifics: The Type Of Injection The Time Travel Tracer Needs To Perform Is Incompatible With The Chromium Sandbox. In Order To Record A Trace, You'll Need To Run With --no-sandbox. Chromium Cannot Run Elevated With Administrator Privileges, So The "Launch Executable (advance)" Option Won't Work, You'll Need To Attach After The Process Has Already Launched Via The Checkbox In The Bottom Right. If You Need To Record Startup-like Things, You'll Have To Use --{browser,gpu,renderer,utility}-startup-dialog, Then Attach (and Hope The Relevant Code Hasn't Executed Before That Point). JsDbg -- Data Structure Visualization You Can Install JsDbg As A Plugin For WinDbg Or Visual Studio. It Interactively Lets You Look At Data Structures (such As The DOM Tree, Accessibility Tree, Layout Object Tree, And Others) In A Web Browser As You Debug. See The JsDbg Site For Some Screen Shots And Usage Examples. This Also Works When Examining Memory Dumps (though Not Minidumps), And Also Works Together With Time Travel Debugging. Visual Studio Hints Debug Visualizers Chrome's Custom Debug Visualizers Should Be Added To The Pdb Files And Automatically Picked Up By Visual Studio. The Definitions Are In //tools/win/DebugVisualizers If You Need To Modify Them (the BUILD.gn File There Has Additional Instructions). Don't Step Into Trivial Functions The Debugger Can Be Configured To Automatically Not Step Into Functions Based On Regular Expression. Edit Default.natstepfilter In The Following Directory: For Visual Studio 2015: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers (for All Users) Or %USERPROFILE%\My Documents\Visual Studio 2015\Visualizers (for The Current User Only) For Visual Studio 2017 Pro: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Packages\Debugger\Visualizers (for All Users) Or %USERPROFILE%\My Documents\Visual Studio 2017\Visualizers (for The Current User Only) Add Regular Expressions Of Functions To Not Step Into. Remember To Regex-escape And XML-escape Them, E.g. < For < And \. For A Literal Dot. Example: Operator New NoStepInto Operator Delete NoStepInto Std::.* NoStepInto WTF::.*Ptr ::.* NoStepInto This File Is Read At Start Of A Debugging Session (F5), So You Don't Need To Restart Visual Studio After Changing It. More Info: Microsoft Email Thread V8 And Chromium V8 Supports Many Command-line Flags That Are Useful For Debugging. V8 Command-line Flags Can Be Set Via The Chromium Command-line Flag --js-flags; For Instance: Chrome.exe --js-flags="--trace_exception --heap_stats" Note That Some V8 Command-line Flags Exist Only In The Debug Build Of V8. For A List Of All V8 Flags Try: Chrome.exe --js-flags="--help" Graphics Debugging GPU Acceleration Of Rendering Can Be More Easily Debugged With Tools. See: Graphics Debugging In Visual Studio 2013 Graphical Debugging With NVIDIA NSight Debugging On Another Machine Sometimes It's Useful To Debug Installation And Execution On A Machine Other Than Your Primary Build Box. To Run The Installer On Said Other Machine, First Build The Mini_installer Target On Your Main Build Machine (e.g., Autoninja -C Out\Debug Mini_installer). Next, On The Debug Machine: Make The Build Machine's Build Volume Available On The Debug Machine Either By Mounting It Locally (e.g., Z:\) Or By Crafting A UNC Path To It (e.g., \\builder\src) Open Up A Command Prompt And Change To A Local Disk Run Src\tools\win\copy-installer.bat In The Remote Checkout By Way Of The Mount (e.g., Z:\PATHTOCHECKOUT\src\...) Or UNC Path (e.g., \\builder\src\...). This Will Copy The Installer, DLLs, And PDBs Into Your Debug Machine's C:\out Or C:\build (depending On If You're Rocking The Component=shared_library Build Or Not) Run C:\out\Debug\mini_installer.exe With The Flags Of Your Choice To Install Chrome. This Can Take Some Time, Especially On A Slow Machine. Watch The Task Manager And Wait Until Mini_installer.exe Exits Before Trying To Launch Chrome (by Way Of The Shortcut(s) Created By The Installer) For Extra Pleasure, Add C:\out\Debug To Your _NT_SYMBOL_PATH Environment Variable Consider Reading The Documentation At The Top Of Copy-installer.bat To See How You Can Run It. It Tries To Be Smart And Copy The Right Things, But You May Need To Be Explicit (e.g., "copy-installer.bat Out Debug"). It Is Safe To Re-run The Script To Copy Only Modified Files (after A Rebuild, For Example). You Can Also Use The Zip Action Of The Isolate Scripts (tools\mb\mb.py) To Package All The Files For A Target Into A Single Zip File, For Example: Python Tools\mb\mb.py Zip Out/Release Base_unittests Base_unittests.zip Finding All Memory Allocations It Is Possible To Use Heap Snapshots To Get Call Stacks On All Outstanding Allocations That Use The OS Heap. This Works Particularly Well If Heap Snapshots Are Started As Soon As The Chrome Browser Process Is Created, But Before It Starts Running. Details Can Be Found In This Batch File. However, With PartitionAlloc Everywhere Most Chromium Allocations No Longer Use The Windows Heap So This Will Only Find A Subset Of Allocations, Mostly From OS DLLs. Find Memory Leaks Note: As With Heap Snapshots The Utility Of UMDH Is Greatly Reduced Now Because PartitionAlloc Everywhere Has Mostly Replaced The Windows Heap. The Windows Heap Manager Has A Really Useful Debug Flag, Where It Can Be Asked To Capture And Store A Stack Trace With Every Allocation. The Tool To Scrape These Stack Traces Out Of Processes Is UMDH, Which Comes With WinDbg. UMDH Is Great. It Will Capture A Snapshot Of The Heap State As Many Times As You Like, And It'll Do It Fairly Quickly. You Then Run It Again Against Either A Single Snapshot, Or A Pair Of Snapshots, At Which Time It'll Symbolize The Stack Traces And Aggregate Usage Up To Unique Stack Traces. Turning On The User Stack Trace Database For Chrome.exe With Gflags.exe Makes It Run Unbearably Slowly; However, Turning On The User Stack Trace Database On For The Browser Alone Is Just Fine. While It's Possible To Turn On The User Stack Database With The "!gflag" Debugging Extension, It's Too Late To Do This By The Time The Initial Debugger Breakpoint Hits. The Only Reasonable Way To Do This Is To Launch GFlags.exe, Enable The User Stack Trace Database (per Image Below), Launch Chrome Under The Debugger. Set A Breakpont When Chrome.dll Loads With "sxe Ld Chrome.dll". Step Up, To Allow Chrome.dll To Initialize. Disable The Stack Trace Database In GFlags.exe. Continue Chrome, Optionally Detaching The Debugger. Image GFlags.exe Settings For User Mode Stack Trace Database. If You Then Ever Suffer A Browser Memory Leak, You Can Snarf A Dump Of The Process With Umdh -p: > Chrome-browser-leak-umdh-dump.txt Which Can Then Typically Be "trivially" Analyzed To Find The Culprit. Miscellaneous Note That By Default Application Verifier Only Works With Non-official Builds Of Chromium. To Use Application Verifier On Official Builds You Need To Add --disable-features=RendererCodeIntegrity To Avoid Sandbox Crashes In Renderer Processes. See Crbug.com/1004989 For Details. See Also This Page. Application Verifier Is A Free Tool From Microsoft (available As Part Of The Windows SDK) That Can Be Used To Flush Out Programming Errors. Starting With M68 Application Verifier Can Be Enabled For Chrome.exe Without Needing To Disable The Sandbox. After Adding Chrome.exe To The List Of Applications To Be Stressed You Need To Expand The List Of Basics Checks And Disable The Leak Checks. You May Also Need To Disable Handles And Locks Checks Depending On Your Graphics Driver And Specific Chrome Version, But The Eventual Goal Is To Have Chrome Run With Handles And Locks Checks Enabled. When Bugs Are Found Chrome Will Trigger A Breakpoint So Running All Chrome Processes Under A Debugger Is Recommended. Chrome Will Run Much More Slowly Because Application Verifier Puts Every Heap Allocation On A Separate Page. Note That With PartitionAlloc Everywhere Most Chromium Allocations Don't Actually Go Through The Windows Heap And Are Therefore Unaffected By Application Verifier. You Can Check The Undocumented 'Cuzz' Checkbox In Application Verifier To Get The Windows Thread Scheduler To Add Some Extra Randomness In Order To Help Expose Race Conditions In Your Code. To Put A Breakpoint On CreateFile(), Add This Break Point: {,,kernel32.dll}_CreateFileW@28 {,,kernel32.dll} Specifies The DLL (context Operator). _ Prefix Means Extern "C". @28 Postfix Means _stdcall With The Stack Pop At The End Of The Function. I.e. The Number Of Arguments In BYTES. You Can Use DebugView From SysInternals Or Sawbuck To View LOG() Messages That Normally Go To Stderr On POSIX.
“The Chromium Logo The Chromium Projects Home Chromium ChromiumOS Quick Links Report Bugs Discuss Other Sites Chromium Blog Google Chrome Extensions Except As Otherwise Noted, The Content Of This Page Is Licensed Under A Creative Commons Attribution 2.5 License, And Examples Are Licensed Under The BSD License. Privacy Edit This Page For Developers > How-Tos > Debugging Chromium On Windows First See Get The Code For Checkout And Build Instructions. Getting Started You Can Use Visual Studio's Built-in Debugger Or WinDBG To Debug Chromium. You Don't Need To Use The IDE To Build In Order To Use The Debugger: Autoninja Is Used To Build Chromium And Most Developers Invoke It From A Command Prompt, And Then Open The IDE For Debugging As Necessary. To Start Debugging An Already-built Executable With Visual Studio Just Launch Visual Studio (2019 Or Higher) And Select File-> Open-> Project/Solution (Ctrl+Shift+O) And Select The Executable Of Interest. This Will Create A Solution With That Executable As The 'project'. You Can Then Launch The Debugger With F5 Or F11 Or From The Debug Menu. If You Right-click On The Executable In Solution Explorer And Select Properties Then You Can Edit Things Such As The Executable Path, Command-line Arguments, And Working Directory. You Can Add Additional Executables To The Solution By Using File-> Add-> Existing Project And Selecting Another Already-built Executable. You Can Select Which One To Debug By Right-clicking On One Of Them In Solution Explorer And Selecting Set As Startup Project. When Your Solution File Is Customized To Your Taste You Can Save It To A Directory Such As Out\solutions. Saving It There Helps Ensure That Relative Paths To Source Files, Printed From Build Commands, Will Correctly Identify The Source Files. The Tools Menu Can Be Used To Add Commands To Do Things Like Invoke Autoninja To Build Chrome, Compile The Selected Source File, Or Other Things. Visual Studio 2017 Is Not Recommended For Debugging Of Chromium - Use A Newer Version For Best Performance And Stability. Symbol_level=2 Is The Default On Windows And Gives Full Debugging Information With Types, Locals, Globals, Function Names, And Source/line Information. Symbol_level=1 Creates Smaller PDBs With Just Function Names, And Source/line Information - Source-level Debugging Is Still Supported (new From June 2019), But Local Variables And Type Information Are Missing. Symbol_level=0 Gives Extremely Limited Debugging Abilities, Mostly Just Viewing Call Stacks When Chromium Crashes. Browsing Source Code If You Use A Solution File Generated By Gn (gn Gen --ide=vs) Then Intellisense May Help You Navigate The Code. If This Doesn't Work Or If You Use A Solution Created As Above Then You May Want To Install VsChromium To Help Navigate The Code, As Well As Using Https://source.chromium.org. Profiles It's A Good Idea To Use A Different Chrome Profile For Your Debugging. If You Are Debugging Google Chrome Branded Builds, Or Use A Chromium Build As Your Primary Browser, The Profiles Can Collide So You Can't Run Both At Once, And Your Stable Browser Might See Profile Versions From The Future (Google Chrome And Chromium Use Different Profile Directories By Default So Won't Collide). Use The Command-line Option: --user-data-dir=C:\tmp\my_debug_profile (replace The Path As Necessary) Using The IDE, Go To The Debugging Tab Of The Properties Of The Chrome Project, And Set The Command Arguments. Chrome Debug Log Enable Chrome Debug Logging To A File By Passing --enable-logging --v=1 Command-line Flags At Startup. Debug Builds Place The Chrome_debug.log File In The Out\Debug Directory. Release Builds Place The File In The Top Level Of The User Data Chromium App Directory, Which Is OS-version-dependent. For More Information, See Logging And User Data Directory Details. Symbol Server If You Are Debugging Official Google Chrome Release Builds, Use The Symbol Server: Https://chromium-browser-symsrv.commondatastorage.googleapis.com In Visual Studio, This Goes In Tools > Options Under Debugging > Symbols. You Should Set Up A Local Cache In A Empty Directory On Your Computer. In Windbg You Can Add This To Your Symbol Server Search Path With The Command Below, Where C:\symbols Is A Local Cache Directory: .sympath+ SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Alternately, You Can Set The _NT_SYMBOL_PATH Environment Variable To Include Both The Microsoft And Google Symbol Servers - VS, Windbg, And Other Tools Should Both Respect This Environment Variable: _NT_SYMBOL_PATH=SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Note That Symbol Servers Will Let The Debuggers Download Both The PE Files (DLLs And EXEs) And The PDB Files. Chrome Often Loads Third Party Libraries And Partial Symbols For Some Of These Are Also Public. For Example: AMD: Https://download.amd.com/dir/bin Nvidia: Https://driver-symbols.nvidia.com/ Intel: Https://software.intel.com/sites/downloads/symbols/ For Example, For Completeness, The Following Symbol Server Environment Variable Will Resolve All Of The Above Sources - But This Is More Than Is Normally Needed: _NT_SYMBOL_PATH=SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com;SRV\*C:\symbols\*https://download.amd.com/dir/bin;SRV\*C:\symbols\*https://driver-symbols.nvidia.com/;SRV\*C:\symbols\*https://software.intel.com/sites/downloads/symbols/ Source Indexing You Should Set Up Source Indexing In Your Debugger (.srcfix In Windbg, Tools-> Options-> Debugging-> General-> Enable Source Server Support In Visual Studio) So That The Correct Source Files Will Automatically Be Downloaded Based On Information In The Downloaded Symbols. Additionally, You Must Have Python In Your Path In Order For The Command That Fetches Source Files To Succeed; Launching The Debugger From The Same Environment As Where You Build Chromium Is An Easy Way To Ensure It's Present. This Is Highly Recommended When Debugging Released Google Chrome Builds Or Looking At Crash Dumps. Having The Correct Version Of The Source Files Automatically Show Up Saves Significant Time So You Should Definitely Set This. Multi-process Issues Chromium Can Be Challenging To Debug Because Of Its Multi-process Architecture. When You Select Run In The Debugger, Only The Main Browser Process Will Be Debugged. The Code That Actually Renders Web Pages (the Renderer) And The Plugins Will Be In Separate Processes That's Not (yet!) Being Debugged. The ProcessExplorer Tool Has A Process Tree View Where You Can See How These Processes Are Related. You Can Also Get The Process IDs Associated With Each Tab From The Chrome Task Manager (right-click On An Empty Area Of The Window Title Bar To Open). Automatically Attach To Child Processes There Are Two Visual Studio Extensions That Enable The Debugger To Automatically Attach To All Chrome Processes, So You Can Debug All Of Chrome At Once. Microsoft's Child Process Debugging Power Tool Is A Standalone Extension For This, And VsChromium Is Another Option That Bundles Many Other Additional Features. In Addition To Installing One Of These Extensions, You Must Run Visual Studio As Administrator, Or It Will Silently Fail To Attach To Some Of Chrome's Child Processes. Single-process Mode One Way To Debug Issues Is To Run Chromium In Single-process Mode. This Will Allow You To See The Entire State Of The Program Without Extra Work (although It Will Still Have Many Threads). To Use Single-process Mode, Add The Command-line Flag --single-process This Approach Isn't Perfect Because Some Problems Won't Manifest Themselves In This Mode And Some Features Don't Work And Worker Threads Are Still Spawned Into New Processes. Manually Attaching To A Child Process You Can Attach To The Running Child Processes With The Debugger. Select Tools > Attach To Process And Click The Chrome.exe Process You Want To Attach To. Before Attaching, Make Sure You Have Selected Only Native Code When Attaching To The Process This Is Done By Clicking Select... In The Attach To Process Window And Only Checking Native. If You Forget This, It May Attempt To Attach In "WebKit" Mode To Debug JavaScript, And You'll Get An Error Message "An Operation Is Not Legal In The Current State." You Can Now Debug The Two Processes As If They Were One. When You Are Debugging Multiple Processes, Open The Debug > Windows > Processes Window To Switch Between Them. Sometimes You Are Debugging Something That Only Happens On Startup, And Want To See The Child Process As Soon As It Starts. Use: --renderer-startup-dialog --no-sandbox You Have To Disable The Sandbox Or The Dialog Box Will Be Prohibited From Showing. When The Dialog Appears, Visit Tools > Attach To Process And Attach To The Process Showing The Renderer Startup Dialog. Now You're Debugging In The Renderer And Can Continue Execution By Pressing OK In The Dialog. Startup Dialogs Also Exist For Other Child Process Types: --gpu-startup-dialog, --ppapi-startup-dialog, --utility-startup-dialog, --plugin-startup-dialog (for NPAPI). For Utilities, You Can Add A Service Type --utility-startup-dialog=data_decoder.mojom.DataDecoderService. You Can Also Try The Vs-chromium Plug-in To Attach To The Right Processes. Semi-automatically Attaching The Debugger To Child Processes The Following Flags Cause Child Processes To Wait For 60 Seconds In A Busy Loop For A Debugger To Attach To The Process. Once Either Condition Is True, It Continues On; No Exception Is Thrown. --wait-for-debugger-children[=filter] The Filter, If Provided, Will Fire Only If It Matches The --type Parameter To The Process. Values Include Renderer, Plugin (for NPAPI), Ppapi, Gpu-process, And Utility. When Using This Option, It May Be Helpful To Limit The Number Of Renderer Processes Spawned, Using: --renderer-process-limit=1 Image File Execution Options Using Image File Execution Options (IFEO) Will Not Work Because CreateProcess() Returns The Handle To The Debugger Process Instead Of The Intended Child Process. There Are Also Issues With The Sandbox. Time Travel Debugging You Can Do Time Travel Debugging Using WinDbg Preview (must Be Installed From The Microsoft Store). This Lets You Execute A Program Forward And Backwards. After Capturing A Trace, You Can Set Breakpoints And Step Through Code As Normal, But Also Provides 'backwards' Commands (g-, T-, P-) So That You Can Go Back And Forth Through The Execution. It Is Especially Useful To Set Data Breakpoints (ba Command) And Reverse Continuing, So You Can See When A Certain Variable Was Last Changed To Its Current Value. Chromium Specifics: The Type Of Injection The Time Travel Tracer Needs To Perform Is Incompatible With The Chromium Sandbox. In Order To Record A Trace, You'll Need To Run With --no-sandbox. Chromium Cannot Run Elevated With Administrator Privileges, So The "Launch Executable (advance)" Option Won't Work, You'll Need To Attach After The Process Has Already Launched Via The Checkbox In The Bottom Right. If You Need To Record Startup-like Things, You'll Have To Use --{browser,gpu,renderer,utility}-startup-dialog, Then Attach (and Hope The Relevant Code Hasn't Executed Before That Point). JsDbg -- Data Structure Visualization You Can Install JsDbg As A Plugin For WinDbg Or Visual Studio. It Interactively Lets You Look At Data Structures (such As The DOM Tree, Accessibility Tree, Layout Object Tree, And Others) In A Web Browser As You Debug. See The JsDbg Site For Some Screen Shots And Usage Examples. This Also Works When Examining Memory Dumps (though Not Minidumps), And Also Works Together With Time Travel Debugging. Visual Studio Hints Debug Visualizers Chrome's Custom Debug Visualizers Should Be Added To The Pdb Files And Automatically Picked Up By Visual Studio. The Definitions Are In //tools/win/DebugVisualizers If You Need To Modify Them (the BUILD.gn File There Has Additional Instructions). Don't Step Into Trivial Functions The Debugger Can Be Configured To Automatically Not Step Into Functions Based On Regular Expression. Edit Default.natstepfilter In The Following Directory: For Visual Studio 2015: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers (for All Users) Or %USERPROFILE%\My Documents\Visual Studio 2015\Visualizers (for The Current User Only) For Visual Studio 2017 Pro: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Packages\Debugger\Visualizers (for All Users) Or %USERPROFILE%\My Documents\Visual Studio 2017\Visualizers (for The Current User Only) Add Regular Expressions Of Functions To Not Step Into. Remember To Regex-escape And XML-escape Them, E.g. < For < And \. For A Literal Dot. Example: Operator New NoStepInto Operator Delete NoStepInto Std::.* NoStepInto WTF::.*Ptr ::.* NoStepInto This File Is Read At Start Of A Debugging Session (F5), So You Don't Need To Restart Visual Studio After Changing It. More Info: Microsoft Email Thread V8 And Chromium V8 Supports Many Command-line Flags That Are Useful For Debugging. V8 Command-line Flags Can Be Set Via The Chromium Command-line Flag --js-flags; For Instance: Chrome.exe --js-flags="--trace_exception --heap_stats" Note That Some V8 Command-line Flags Exist Only In The Debug Build Of V8. For A List Of All V8 Flags Try: Chrome.exe --js-flags="--help" Graphics Debugging GPU Acceleration Of Rendering Can Be More Easily Debugged With Tools. See: Graphics Debugging In Visual Studio 2013 Graphical Debugging With NVIDIA NSight Debugging On Another Machine Sometimes It's Useful To Debug Installation And Execution On A Machine Other Than Your Primary Build Box. To Run The Installer On Said Other Machine, First Build The Mini_installer Target On Your Main Build Machine (e.g., Autoninja -C Out\Debug Mini_installer). Next, On The Debug Machine: Make The Build Machine's Build Volume Available On The Debug Machine Either By Mounting It Locally (e.g., Z:\) Or By Crafting A UNC Path To It (e.g., \\builder\src) Open Up A Command Prompt And Change To A Local Disk Run Src\tools\win\copy-installer.bat In The Remote Checkout By Way Of The Mount (e.g., Z:\PATHTOCHECKOUT\src\...) Or UNC Path (e.g., \\builder\src\...). This Will Copy The Installer, DLLs, And PDBs Into Your Debug Machine's C:\out Or C:\build (depending On If You're Rocking The Component=shared_library Build Or Not) Run C:\out\Debug\mini_installer.exe With The Flags Of Your Choice To Install Chrome. This Can Take Some Time, Especially On A Slow Machine. Watch The Task Manager And Wait Until Mini_installer.exe Exits Before Trying To Launch Chrome (by Way Of The Shortcut(s) Created By The Installer) For Extra Pleasure, Add C:\out\Debug To Your _NT_SYMBOL_PATH Environment Variable Consider Reading The Documentation At The Top Of Copy-installer.bat To See How You Can Run It. It Tries To Be Smart And Copy The Right Things, But You May Need To Be Explicit (e.g., "copy-installer.bat Out Debug"). It Is Safe To Re-run The Script To Copy Only Modified Files (after A Rebuild, For Example). You Can Also Use The Zip Action Of The Isolate Scripts (tools\mb\mb.py) To Package All The Files For A Target Into A Single Zip File, For Example: Python Tools\mb\mb.py Zip Out/Release Base_unittests Base_unittests.zip Finding All Memory Allocations It Is Possible To Use Heap Snapshots To Get Call Stacks On All Outstanding Allocations That Use The OS Heap. This Works Particularly Well If Heap Snapshots Are Started As Soon As The Chrome Browser Process Is Created, But Before It Starts Running. Details Can Be Found In This Batch File. However, With PartitionAlloc Everywhere Most Chromium Allocations No Longer Use The Windows Heap So This Will Only Find A Subset Of Allocations, Mostly From OS DLLs. Find Memory Leaks Note: As With Heap Snapshots The Utility Of UMDH Is Greatly Reduced Now Because PartitionAlloc Everywhere Has Mostly Replaced The Windows Heap. The Windows Heap Manager Has A Really Useful Debug Flag, Where It Can Be Asked To Capture And Store A Stack Trace With Every Allocation. The Tool To Scrape These Stack Traces Out Of Processes Is UMDH, Which Comes With WinDbg. UMDH Is Great. It Will Capture A Snapshot Of The Heap State As Many Times As You Like, And It'll Do It Fairly Quickly. You Then Run It Again Against Either A Single Snapshot, Or A Pair Of Snapshots, At Which Time It'll Symbolize The Stack Traces And Aggregate Usage Up To Unique Stack Traces. Turning On The User Stack Trace Database For Chrome.exe With Gflags.exe Makes It Run Unbearably Slowly; However, Turning On The User Stack Trace Database On For The Browser Alone Is Just Fine. While It's Possible To Turn On The User Stack Database With The "!gflag" Debugging Extension, It's Too Late To Do This By The Time The Initial Debugger Breakpoint Hits. The Only Reasonable Way To Do This Is To Launch GFlags.exe, Enable The User Stack Trace Database (per Image Below), Launch Chrome Under The Debugger. Set A Breakpont When Chrome.dll Loads With "sxe Ld Chrome.dll". Step Up, To Allow Chrome.dll To Initialize. Disable The Stack Trace Database In GFlags.exe. Continue Chrome, Optionally Detaching The Debugger. Image GFlags.exe Settings For User Mode Stack Trace Database. If You Then Ever Suffer A Browser Memory Leak, You Can Snarf A Dump Of The Process With Umdh -p: > Chrome-browser-leak-umdh-dump.txt Which Can Then Typically Be "trivially" Analyzed To Find The Culprit. Miscellaneous Note That By Default Application Verifier Only Works With Non-official Builds Of Chromium. To Use Application Verifier On Official Builds You Need To Add --disable-features=RendererCodeIntegrity To Avoid Sandbox Crashes In Renderer Processes. See Crbug.com/1004989 For Details. See Also This Page. Application Verifier Is A Free Tool From Microsoft (available As Part Of The Windows SDK) That Can Be Used To Flush Out Programming Errors. Starting With M68 Application Verifier Can Be Enabled For Chrome.exe Without Needing To Disable The Sandbox. After Adding Chrome.exe To The List Of Applications To Be Stressed You Need To Expand The List Of Basics Checks And Disable The Leak Checks. You May Also Need To Disable Handles And Locks Checks Depending On Your Graphics Driver And Specific Chrome Version, But The Eventual Goal Is To Have Chrome Run With Handles And Locks Checks Enabled. When Bugs Are Found Chrome Will Trigger A Breakpoint So Running All Chrome Processes Under A Debugger Is Recommended. Chrome Will Run Much More Slowly Because Application Verifier Puts Every Heap Allocation On A Separate Page. Note That With PartitionAlloc Everywhere Most Chromium Allocations Don't Actually Go Through The Windows Heap And Are Therefore Unaffected By Application Verifier. You Can Check The Undocumented 'Cuzz' Checkbox In Application Verifier To Get The Windows Thread Scheduler To Add Some Extra Randomness In Order To Help Expose Race Conditions In Your Code. To Put A Breakpoint On CreateFile(), Add This Break Point: {,,kernel32.dll}_CreateFileW@28 {,,kernel32.dll} Specifies The DLL (context Operator). _ Prefix Means Extern "C". @28 Postfix Means _stdcall With The Stack Pop At The End Of The Function. I.e. The Number Of Arguments In BYTES. You Can Use DebugView From SysInternals Or Sawbuck To View LOG() Messages That Normally Go To Stderr On POSIX.” Subjects and Themes:
Edition Identifiers:
- Internet Archive ID: debugging-chromium-on-windows
Downloads Information:
The book is available for download in "texts" format, the size of the file-s is: 0.33 Mbs, the file-s for this book were downloaded 2 times, the file-s went public at Fri Jul 11 2025.
Available formats:
Archive BitTorrent - Metadata - Text -
Related Links:
- Whefi.com: Download
- Whefi.com: Review - Coverage
- Internet Archive: Details
- Internet Archive Link: Downloads
Online Marketplaces
Find The Chromium Logo The Chromium Projects Home Chromium ChromiumOS Quick Links Report Bugs Discuss Other Sites Chromium Blog Google Chrome Extensions Except As Otherwise Noted, The Content Of This Page Is Licensed Under A Creative Commons Attribution 2.5 License, And Examples Are Licensed Under The BSD License. Privacy Edit This Page For Developers > How-Tos > Debugging Chromium On Windows First See Get The Code For Checkout And Build Instructions. Getting Started You Can Use Visual Studio's Built-in Debugger Or WinDBG To Debug Chromium. You Don't Need To Use The IDE To Build In Order To Use The Debugger: Autoninja Is Used To Build Chromium And Most Developers Invoke It From A Command Prompt, And Then Open The IDE For Debugging As Necessary. To Start Debugging An Already-built Executable With Visual Studio Just Launch Visual Studio (2019 Or Higher) And Select File-> Open-> Project/Solution (Ctrl+Shift+O) And Select The Executable Of Interest. This Will Create A Solution With That Executable As The 'project'. You Can Then Launch The Debugger With F5 Or F11 Or From The Debug Menu. If You Right-click On The Executable In Solution Explorer And Select Properties Then You Can Edit Things Such As The Executable Path, Command-line Arguments, And Working Directory. You Can Add Additional Executables To The Solution By Using File-> Add-> Existing Project And Selecting Another Already-built Executable. You Can Select Which One To Debug By Right-clicking On One Of Them In Solution Explorer And Selecting Set As Startup Project. When Your Solution File Is Customized To Your Taste You Can Save It To A Directory Such As Out\solutions. Saving It There Helps Ensure That Relative Paths To Source Files, Printed From Build Commands, Will Correctly Identify The Source Files. The Tools Menu Can Be Used To Add Commands To Do Things Like Invoke Autoninja To Build Chrome, Compile The Selected Source File, Or Other Things. Visual Studio 2017 Is Not Recommended For Debugging Of Chromium - Use A Newer Version For Best Performance And Stability. Symbol_level=2 Is The Default On Windows And Gives Full Debugging Information With Types, Locals, Globals, Function Names, And Source/line Information. Symbol_level=1 Creates Smaller PDBs With Just Function Names, And Source/line Information - Source-level Debugging Is Still Supported (new From June 2019), But Local Variables And Type Information Are Missing. Symbol_level=0 Gives Extremely Limited Debugging Abilities, Mostly Just Viewing Call Stacks When Chromium Crashes. Browsing Source Code If You Use A Solution File Generated By Gn (gn Gen --ide=vs) Then Intellisense May Help You Navigate The Code. If This Doesn't Work Or If You Use A Solution Created As Above Then You May Want To Install VsChromium To Help Navigate The Code, As Well As Using Https://source.chromium.org. Profiles It's A Good Idea To Use A Different Chrome Profile For Your Debugging. If You Are Debugging Google Chrome Branded Builds, Or Use A Chromium Build As Your Primary Browser, The Profiles Can Collide So You Can't Run Both At Once, And Your Stable Browser Might See Profile Versions From The Future (Google Chrome And Chromium Use Different Profile Directories By Default So Won't Collide). Use The Command-line Option: --user-data-dir=C:\tmp\my_debug_profile (replace The Path As Necessary) Using The IDE, Go To The Debugging Tab Of The Properties Of The Chrome Project, And Set The Command Arguments. Chrome Debug Log Enable Chrome Debug Logging To A File By Passing --enable-logging --v=1 Command-line Flags At Startup. Debug Builds Place The Chrome_debug.log File In The Out\Debug Directory. Release Builds Place The File In The Top Level Of The User Data Chromium App Directory, Which Is OS-version-dependent. For More Information, See Logging And User Data Directory Details. Symbol Server If You Are Debugging Official Google Chrome Release Builds, Use The Symbol Server: Https://chromium-browser-symsrv.commondatastorage.googleapis.com In Visual Studio, This Goes In Tools > Options Under Debugging > Symbols. You Should Set Up A Local Cache In A Empty Directory On Your Computer. In Windbg You Can Add This To Your Symbol Server Search Path With The Command Below, Where C:\symbols Is A Local Cache Directory: .sympath+ SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Alternately, You Can Set The _NT_SYMBOL_PATH Environment Variable To Include Both The Microsoft And Google Symbol Servers - VS, Windbg, And Other Tools Should Both Respect This Environment Variable: _NT_SYMBOL_PATH=SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com Note That Symbol Servers Will Let The Debuggers Download Both The PE Files (DLLs And EXEs) And The PDB Files. Chrome Often Loads Third Party Libraries And Partial Symbols For Some Of These Are Also Public. For Example: AMD: Https://download.amd.com/dir/bin Nvidia: Https://driver-symbols.nvidia.com/ Intel: Https://software.intel.com/sites/downloads/symbols/ For Example, For Completeness, The Following Symbol Server Environment Variable Will Resolve All Of The Above Sources - But This Is More Than Is Normally Needed: _NT_SYMBOL_PATH=SRV\*C:\symbols\*https://msdl.microsoft.com/download/symbols;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com;SRV\*C:\symbols\*https://download.amd.com/dir/bin;SRV\*C:\symbols\*https://driver-symbols.nvidia.com/;SRV\*C:\symbols\*https://software.intel.com/sites/downloads/symbols/ Source Indexing You Should Set Up Source Indexing In Your Debugger (.srcfix In Windbg, Tools-> Options-> Debugging-> General-> Enable Source Server Support In Visual Studio) So That The Correct Source Files Will Automatically Be Downloaded Based On Information In The Downloaded Symbols. Additionally, You Must Have Python In Your Path In Order For The Command That Fetches Source Files To Succeed; Launching The Debugger From The Same Environment As Where You Build Chromium Is An Easy Way To Ensure It's Present. This Is Highly Recommended When Debugging Released Google Chrome Builds Or Looking At Crash Dumps. Having The Correct Version Of The Source Files Automatically Show Up Saves Significant Time So You Should Definitely Set This. Multi-process Issues Chromium Can Be Challenging To Debug Because Of Its Multi-process Architecture. When You Select Run In The Debugger, Only The Main Browser Process Will Be Debugged. The Code That Actually Renders Web Pages (the Renderer) And The Plugins Will Be In Separate Processes That's Not (yet!) Being Debugged. The ProcessExplorer Tool Has A Process Tree View Where You Can See How These Processes Are Related. You Can Also Get The Process IDs Associated With Each Tab From The Chrome Task Manager (right-click On An Empty Area Of The Window Title Bar To Open). Automatically Attach To Child Processes There Are Two Visual Studio Extensions That Enable The Debugger To Automatically Attach To All Chrome Processes, So You Can Debug All Of Chrome At Once. Microsoft's Child Process Debugging Power Tool Is A Standalone Extension For This, And VsChromium Is Another Option That Bundles Many Other Additional Features. In Addition To Installing One Of These Extensions, You Must Run Visual Studio As Administrator, Or It Will Silently Fail To Attach To Some Of Chrome's Child Processes. Single-process Mode One Way To Debug Issues Is To Run Chromium In Single-process Mode. This Will Allow You To See The Entire State Of The Program Without Extra Work (although It Will Still Have Many Threads). To Use Single-process Mode, Add The Command-line Flag --single-process This Approach Isn't Perfect Because Some Problems Won't Manifest Themselves In This Mode And Some Features Don't Work And Worker Threads Are Still Spawned Into New Processes. Manually Attaching To A Child Process You Can Attach To The Running Child Processes With The Debugger. Select Tools > Attach To Process And Click The Chrome.exe Process You Want To Attach To. Before Attaching, Make Sure You Have Selected Only Native Code When Attaching To The Process This Is Done By Clicking Select... In The Attach To Process Window And Only Checking Native. If You Forget This, It May Attempt To Attach In "WebKit" Mode To Debug JavaScript, And You'll Get An Error Message "An Operation Is Not Legal In The Current State." You Can Now Debug The Two Processes As If They Were One. When You Are Debugging Multiple Processes, Open The Debug > Windows > Processes Window To Switch Between Them. Sometimes You Are Debugging Something That Only Happens On Startup, And Want To See The Child Process As Soon As It Starts. Use: --renderer-startup-dialog --no-sandbox You Have To Disable The Sandbox Or The Dialog Box Will Be Prohibited From Showing. When The Dialog Appears, Visit Tools > Attach To Process And Attach To The Process Showing The Renderer Startup Dialog. Now You're Debugging In The Renderer And Can Continue Execution By Pressing OK In The Dialog. Startup Dialogs Also Exist For Other Child Process Types: --gpu-startup-dialog, --ppapi-startup-dialog, --utility-startup-dialog, --plugin-startup-dialog (for NPAPI). For Utilities, You Can Add A Service Type --utility-startup-dialog=data_decoder.mojom.DataDecoderService. You Can Also Try The Vs-chromium Plug-in To Attach To The Right Processes. Semi-automatically Attaching The Debugger To Child Processes The Following Flags Cause Child Processes To Wait For 60 Seconds In A Busy Loop For A Debugger To Attach To The Process. Once Either Condition Is True, It Continues On; No Exception Is Thrown. --wait-for-debugger-children[=filter] The Filter, If Provided, Will Fire Only If It Matches The --type Parameter To The Process. Values Include Renderer, Plugin (for NPAPI), Ppapi, Gpu-process, And Utility. When Using This Option, It May Be Helpful To Limit The Number Of Renderer Processes Spawned, Using: --renderer-process-limit=1 Image File Execution Options Using Image File Execution Options (IFEO) Will Not Work Because CreateProcess() Returns The Handle To The Debugger Process Instead Of The Intended Child Process. There Are Also Issues With The Sandbox. Time Travel Debugging You Can Do Time Travel Debugging Using WinDbg Preview (must Be Installed From The Microsoft Store). This Lets You Execute A Program Forward And Backwards. After Capturing A Trace, You Can Set Breakpoints And Step Through Code As Normal, But Also Provides 'backwards' Commands (g-, T-, P-) So That You Can Go Back And Forth Through The Execution. It Is Especially Useful To Set Data Breakpoints (ba Command) And Reverse Continuing, So You Can See When A Certain Variable Was Last Changed To Its Current Value. Chromium Specifics: The Type Of Injection The Time Travel Tracer Needs To Perform Is Incompatible With The Chromium Sandbox. In Order To Record A Trace, You'll Need To Run With --no-sandbox. Chromium Cannot Run Elevated With Administrator Privileges, So The "Launch Executable (advance)" Option Won't Work, You'll Need To Attach After The Process Has Already Launched Via The Checkbox In The Bottom Right. If You Need To Record Startup-like Things, You'll Have To Use --{browser,gpu,renderer,utility}-startup-dialog, Then Attach (and Hope The Relevant Code Hasn't Executed Before That Point). JsDbg -- Data Structure Visualization You Can Install JsDbg As A Plugin For WinDbg Or Visual Studio. It Interactively Lets You Look At Data Structures (such As The DOM Tree, Accessibility Tree, Layout Object Tree, And Others) In A Web Browser As You Debug. See The JsDbg Site For Some Screen Shots And Usage Examples. This Also Works When Examining Memory Dumps (though Not Minidumps), And Also Works Together With Time Travel Debugging. Visual Studio Hints Debug Visualizers Chrome's Custom Debug Visualizers Should Be Added To The Pdb Files And Automatically Picked Up By Visual Studio. The Definitions Are In //tools/win/DebugVisualizers If You Need To Modify Them (the BUILD.gn File There Has Additional Instructions). Don't Step Into Trivial Functions The Debugger Can Be Configured To Automatically Not Step Into Functions Based On Regular Expression. Edit Default.natstepfilter In The Following Directory: For Visual Studio 2015: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers (for All Users) Or %USERPROFILE%\My Documents\Visual Studio 2015\Visualizers (for The Current User Only) For Visual Studio 2017 Pro: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Packages\Debugger\Visualizers (for All Users) Or %USERPROFILE%\My Documents\Visual Studio 2017\Visualizers (for The Current User Only) Add Regular Expressions Of Functions To Not Step Into. Remember To Regex-escape And XML-escape Them, E.g. < For < And \. For A Literal Dot. Example: Operator New NoStepInto Operator Delete NoStepInto Std::.* NoStepInto WTF::.*Ptr ::.* NoStepInto This File Is Read At Start Of A Debugging Session (F5), So You Don't Need To Restart Visual Studio After Changing It. More Info: Microsoft Email Thread V8 And Chromium V8 Supports Many Command-line Flags That Are Useful For Debugging. V8 Command-line Flags Can Be Set Via The Chromium Command-line Flag --js-flags; For Instance: Chrome.exe --js-flags="--trace_exception --heap_stats" Note That Some V8 Command-line Flags Exist Only In The Debug Build Of V8. For A List Of All V8 Flags Try: Chrome.exe --js-flags="--help" Graphics Debugging GPU Acceleration Of Rendering Can Be More Easily Debugged With Tools. See: Graphics Debugging In Visual Studio 2013 Graphical Debugging With NVIDIA NSight Debugging On Another Machine Sometimes It's Useful To Debug Installation And Execution On A Machine Other Than Your Primary Build Box. To Run The Installer On Said Other Machine, First Build The Mini_installer Target On Your Main Build Machine (e.g., Autoninja -C Out\Debug Mini_installer). Next, On The Debug Machine: Make The Build Machine's Build Volume Available On The Debug Machine Either By Mounting It Locally (e.g., Z:\) Or By Crafting A UNC Path To It (e.g., \\builder\src) Open Up A Command Prompt And Change To A Local Disk Run Src\tools\win\copy-installer.bat In The Remote Checkout By Way Of The Mount (e.g., Z:\PATHTOCHECKOUT\src\...) Or UNC Path (e.g., \\builder\src\...). This Will Copy The Installer, DLLs, And PDBs Into Your Debug Machine's C:\out Or C:\build (depending On If You're Rocking The Component=shared_library Build Or Not) Run C:\out\Debug\mini_installer.exe With The Flags Of Your Choice To Install Chrome. This Can Take Some Time, Especially On A Slow Machine. Watch The Task Manager And Wait Until Mini_installer.exe Exits Before Trying To Launch Chrome (by Way Of The Shortcut(s) Created By The Installer) For Extra Pleasure, Add C:\out\Debug To Your _NT_SYMBOL_PATH Environment Variable Consider Reading The Documentation At The Top Of Copy-installer.bat To See How You Can Run It. It Tries To Be Smart And Copy The Right Things, But You May Need To Be Explicit (e.g., "copy-installer.bat Out Debug"). It Is Safe To Re-run The Script To Copy Only Modified Files (after A Rebuild, For Example). You Can Also Use The Zip Action Of The Isolate Scripts (tools\mb\mb.py) To Package All The Files For A Target Into A Single Zip File, For Example: Python Tools\mb\mb.py Zip Out/Release Base_unittests Base_unittests.zip Finding All Memory Allocations It Is Possible To Use Heap Snapshots To Get Call Stacks On All Outstanding Allocations That Use The OS Heap. This Works Particularly Well If Heap Snapshots Are Started As Soon As The Chrome Browser Process Is Created, But Before It Starts Running. Details Can Be Found In This Batch File. However, With PartitionAlloc Everywhere Most Chromium Allocations No Longer Use The Windows Heap So This Will Only Find A Subset Of Allocations, Mostly From OS DLLs. Find Memory Leaks Note: As With Heap Snapshots The Utility Of UMDH Is Greatly Reduced Now Because PartitionAlloc Everywhere Has Mostly Replaced The Windows Heap. The Windows Heap Manager Has A Really Useful Debug Flag, Where It Can Be Asked To Capture And Store A Stack Trace With Every Allocation. The Tool To Scrape These Stack Traces Out Of Processes Is UMDH, Which Comes With WinDbg. UMDH Is Great. It Will Capture A Snapshot Of The Heap State As Many Times As You Like, And It'll Do It Fairly Quickly. You Then Run It Again Against Either A Single Snapshot, Or A Pair Of Snapshots, At Which Time It'll Symbolize The Stack Traces And Aggregate Usage Up To Unique Stack Traces. Turning On The User Stack Trace Database For Chrome.exe With Gflags.exe Makes It Run Unbearably Slowly; However, Turning On The User Stack Trace Database On For The Browser Alone Is Just Fine. While It's Possible To Turn On The User Stack Database With The "!gflag" Debugging Extension, It's Too Late To Do This By The Time The Initial Debugger Breakpoint Hits. The Only Reasonable Way To Do This Is To Launch GFlags.exe, Enable The User Stack Trace Database (per Image Below), Launch Chrome Under The Debugger. Set A Breakpont When Chrome.dll Loads With "sxe Ld Chrome.dll". Step Up, To Allow Chrome.dll To Initialize. Disable The Stack Trace Database In GFlags.exe. Continue Chrome, Optionally Detaching The Debugger. Image GFlags.exe Settings For User Mode Stack Trace Database. If You Then Ever Suffer A Browser Memory Leak, You Can Snarf A Dump Of The Process With Umdh -p: > Chrome-browser-leak-umdh-dump.txt Which Can Then Typically Be "trivially" Analyzed To Find The Culprit. Miscellaneous Note That By Default Application Verifier Only Works With Non-official Builds Of Chromium. To Use Application Verifier On Official Builds You Need To Add --disable-features=RendererCodeIntegrity To Avoid Sandbox Crashes In Renderer Processes. See Crbug.com/1004989 For Details. See Also This Page. Application Verifier Is A Free Tool From Microsoft (available As Part Of The Windows SDK) That Can Be Used To Flush Out Programming Errors. Starting With M68 Application Verifier Can Be Enabled For Chrome.exe Without Needing To Disable The Sandbox. After Adding Chrome.exe To The List Of Applications To Be Stressed You Need To Expand The List Of Basics Checks And Disable The Leak Checks. You May Also Need To Disable Handles And Locks Checks Depending On Your Graphics Driver And Specific Chrome Version, But The Eventual Goal Is To Have Chrome Run With Handles And Locks Checks Enabled. When Bugs Are Found Chrome Will Trigger A Breakpoint So Running All Chrome Processes Under A Debugger Is Recommended. Chrome Will Run Much More Slowly Because Application Verifier Puts Every Heap Allocation On A Separate Page. Note That With PartitionAlloc Everywhere Most Chromium Allocations Don't Actually Go Through The Windows Heap And Are Therefore Unaffected By Application Verifier. You Can Check The Undocumented 'Cuzz' Checkbox In Application Verifier To Get The Windows Thread Scheduler To Add Some Extra Randomness In Order To Help Expose Race Conditions In Your Code. To Put A Breakpoint On CreateFile(), Add This Break Point: {,,kernel32.dll}_CreateFileW@28 {,,kernel32.dll} Specifies The DLL (context Operator). _ Prefix Means Extern "C". @28 Postfix Means _stdcall With The Stack Pop At The End Of The Function. I.e. The Number Of Arguments In BYTES. You Can Use DebugView From SysInternals Or Sawbuck To View LOG() Messages That Normally Go To Stderr On POSIX. at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
5A Plain Account Of Justification. Published For The Benefit Of Such As Are Desirous To Have Right And Clear Apprehensions In Regard To That Important Point. Particularly Useful At This Time. 1752
By Author of The plain account of justification
A plain account of justification. Published for the benefit of such as are desirous to have right and clear apprehensions in regard to that important point. Particularly useful at this time. 1752.. Digitized from IA40316213-14 . Previous issue: bim_eighteenth-century_the-christian-philosophe_robinson-nicholas_1748 . Next issue: bim_eighteenth-century_a-discourse-concerning-g_jackson-joseph-theolog_1713_0 .
“A Plain Account Of Justification. Published For The Benefit Of Such As Are Desirous To Have Right And Clear Apprehensions In Regard To That Important Point. Particularly Useful At This Time. 1752” Metadata:
- Title: ➤ A Plain Account Of Justification. Published For The Benefit Of Such As Are Desirous To Have Right And Clear Apprehensions In Regard To That Important Point. Particularly Useful At This Time. 1752
- Author: ➤ Author of The plain account of justification
- Language: Middle English
“A Plain Account Of Justification. Published For The Benefit Of Such As Are Desirous To Have Right And Clear Apprehensions In Regard To That Important Point. Particularly Useful At This Time. 1752” Subjects and Themes:
- Subjects: ➤ Language & Literature - Literary And Political Reviews - General Interest Periodicals--United Kingdom - Law - Philosophy & Religion - Fine & Performing Arts - Social Sciences - History - History--History of North And South America - Books - microfilm
Edition Identifiers:
- Internet Archive ID: ➤ bim_eighteenth-century_a-plain-account-of-justi_author-of-the-plain-acco_1752
Downloads Information:
The book is available for download in "texts" format, the size of the file-s is: 169.36 Mbs, the file-s for this book were downloaded 16 times, the file-s went public at Mon Oct 02 2023.
Available formats:
Archive BitTorrent - DjVuTXT - Djvu XML - Item Image - Item Tile - JPEG 2000 - JSON - Metadata - OCR Page Index - OCR Search Text - Page Numbers JSON - Scandata - Single Page Processed JP2 ZIP - Text PDF - chOCR - hOCR -
Related Links:
- Whefi.com: Download
- Whefi.com: Review - Coverage
- Internet Archive: Details
- Internet Archive Link: Downloads
Online Marketplaces
Find A Plain Account Of Justification. Published For The Benefit Of Such As Are Desirous To Have Right And Clear Apprehensions In Regard To That Important Point. Particularly Useful At This Time. 1752 at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
Source: The Open Library
The Open Library Search Results
Available books for downloads and borrow from The Open Library
1At that point in time
By Fred D. Thompson

“At that point in time” Metadata:
- Title: At that point in time
- Author: Fred D. Thompson
- Language: English
- Number of Pages: Median: 275
- Publisher: ➤ Quadrangle/New York Times Book Co.
- Publish Date: 1975
- Publish Location: New York
“At that point in time” Subjects and Themes:
- Subjects: ➤ United States - Watergate Affair, 1972-1974 - United States. Congress. Senate. Select Committee on Presidential Campaign Activities - Cities and towns - Congresses
- People: Fred D. Thompson
Edition Identifiers:
- The Open Library ID: OL5060280M
- Online Computer Library Center (OCLC) ID: 1255022 - 1583707
- Library of Congress Control Number (LCCN): 74024290 - 75006670
- All ISBNs: 0812905369 - 9780812905366
Access and General Info:
- First Year Published: 1975
- Is Full Text Available: Yes
- Is The Book Public: No
- Access Status: Borrowable
Online Access
Downloads Are Not Available:
The book is not public therefore the download links will not allow the download of the entire book, however, borrowing the book online is available.
Online Borrowing:
- Borrowing from Open Library: Borrowing link
- Borrowing from Archive.org: Borrowing link
Online Marketplaces
Find At that point in time at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
Source: LibriVox
LibriVox Search Results
Available audio books for downloads from LibriVox
1Calico Cat
By Charles Miner Thompson

This is a cute story of a mysterious feline annoyance and the result of a man acting upon his annoyance. The cat begins a vicious spiral of events that ends with lies, the arrest of a boy, and the guilty conscience of a man. (Summary written by Allyson Hester)
“Calico Cat” Metadata:
- Title: Calico Cat
- Author: Charles Miner Thompson
- Language: English
- Publish Date: 1908
Edition Specifications:
- Format: Audio
- Number of Sections: 7
- Total Time: 2:32:03
Edition Identifiers:
- libriVox ID: 2395
Links and information:
Online Access
Download the Audio Book:
- File Name: calico_cat_ah_0810_librivox
- File Format: zip
- Total Time: 2:32:03
- Download Link: Download link
Online Marketplaces
Find Calico Cat at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
2Royal Book of Oz (version 2 Dramatic Reading)
By Ruth Plumly Thompson

When the professor decides to outline the ancestry of the eminent people of Oz, Scarecrow feels left out. He doesn't have a family tree - unless you count the bean pole on which he had been placed when the farmer put him in the cornfield! So he decides to seek out his roots . . . which leads him, Dorothy, and the Cowardly Lion on adventures they never dreamed, meeting new friends (and foes) along the way. (Introduction by TriciaG)<br /><br /> <b>Cast list:</b><BR> Narrator: <a href="https://librivox.org/reader/8677">KHand</a><br> Scarecrow: <a href="https://librivox.org/reader/7079">Chuck Williamson</a><br> Dorothy: <a href="https://librivox.org/reader/8197">Victoria P</a><br> Cowardly Lion: <a href="https://librivox.org/reader/8012">Woolly Bee</a><br> Sir Hokus: <a href="https://librivox.org/reader/8488">Peter Parshall</a><br> Drummer/Happy Toko, Big Fix : <a href="https://librivox.org/reader/8682">Todd Jenken</a><br> Dromedary, Fix King : <a href="https://librivox.org/reader/6167">Janet</a><br> Chief Poker, General, Fix 1, Comfortable Camel: <a href="https://librivox.org/reader/9023">P. J. Morgan</a><br> Professor Wogglebug, Old Gentleman/The Grand Chew Chew: <a href="https://librivox.org/reader/6281">Beth Thomas</a><br> Zif, Rattlesnake, Middling Son, Blink, Big Bush, Randum, Grandson/Grandsons, Wizard: <a href="https://librivox.org/reader/6548">Kristin Gjerløw</a><br> Jack, A-B-Sea Serpent, Muddle, Others/Courtiers/People, Sticken, Prince 2, Wizard of Oz: <a href="https://librivox.org/reader/6754">ToddHW</a><br> Tik-Tok, Middling Father, Poke Man, Silver Man, Giant, Bed: <a href="https://librivox.org/reader/9007">sunny1849</a><br> Farmer, Pokes, Sticken: <a href="https://librivox.org/reader/8436">Annika Vera</a><br> Tin Woodman, Middling King, Prince 1: <a href="https://librivox.org/reader/8442">Sophia Noelle</a><br> Scraps, Others/Courtiers/People: <a href="https://librivox.org/reader/8009">Frances Brown</a><br> Glinda, Betsy Bobbin, Little Bush, Others/Courtiers/People: <a href="https://librivox.org/reader/8514">Charlotte Brown</a><br> Ozma, Winkie Lady, Lantern 1, Memo, Grandsons, Princess Orange Blossom: <a href="https://librivox.org/reader/6319">thestorygirl</a><br> Jellia Jamb, Pokes, Lantern 2, Grandsons, Others/Courtiers/People, Prince 3: <a href="https://librivox.org/reader/3157">TriciaG</a><br> Middling Singer: <a href="https://librivox.org/reader/2911">David Lawrence</a><br> <br> Editors: <a href="https://librivox.org/reader/6548">Kristin Gjerløw</a>, <a href="https://librivox.org/reader/8072">Kimberly Krause</a>, <a href="https://librivox.org/reader/9300">Gillian Schnurr</a>, <a href="https://librivox.org/reader/8164">Rob Board</a> and <a href="https://librivox.org/reader/8393">Dave Harrell</a>.
“Royal Book of Oz (version 2 Dramatic Reading)” Metadata:
- Title: ➤ Royal Book of Oz (version 2 Dramatic Reading)
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1921
Edition Specifications:
- Format: Audio
- Number of Sections: 25
- Total Time: 04:35:24
Edition Identifiers:
- libriVox ID: 3374
Links and information:
Online Access
Download the Audio Book:
- File Name: royalbookofoz_1410_librivox
- File Format: zip
- Total Time: 04:35:24
- Download Link: Download link
Online Marketplaces
Find Royal Book of Oz (version 2 Dramatic Reading) at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
3Royal Book of Oz
By Ruth Plumly Thompson

The Royal Book of Oz (1921) is the fifteenth in the series of Oz books, and the first to be written by Ruth Plumly Thompson after L. Frank Baum's death. Although Baum was credited as the author, it was written entirely by Thompson. <br /><br />The Scarecrow is upset when Professor Wogglebug tells him that he has no family, so he goes to where Dorothy Gale found him to trace his "roots." Then he vanishes from the face of Oz. <br /><br />Dorothy and the Cowardly Lion mount a search for their friend, but when that is successful, they will need to become a rescue party!
“Royal Book of Oz” Metadata:
- Title: Royal Book of Oz
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1921
Edition Specifications:
- Format: Audio
- Number of Sections: 24
- Total Time: 5:06:41
Edition Identifiers:
- libriVox ID: 4232
Links and information:
Online Access
Download the Audio Book:
- File Name: royal_book_of_oz_1004_librivox
- File Format: zip
- Total Time: 5:06:41
- Download Link: Download link
Online Marketplaces
Find Royal Book of Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
4Calico Cat (version 2)
By Charles Miner Thompson

The consequences of letting your irritation get the better of you are humorously portrayed in this story of a self-important man who fires a shotgun at an annoying cat on his fence.. and hits a man skulking in the bushes. What did the cat do to enrage him? Why was the man in the bushes? And how can the whole matter be covered up and done away with before the neighbors start gossiping? (Summary by Mark F. Smith)
“Calico Cat (version 2)” Metadata:
- Title: Calico Cat (version 2)
- Author: Charles Miner Thompson
- Language: English
- Publish Date: 1908
Edition Specifications:
- Format: Audio
- Number of Sections: 7
- Total Time: 2:30:43
Edition Identifiers:
- libriVox ID: 6995
Links and information:
Online Access
Download the Audio Book:
- File Name: calico_cat_mfs_librivox
- File Format: zip
- Total Time: 2:30:43
- Download Link: Download link
Online Marketplaces
Find Calico Cat (version 2) at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
5Kabumpo in Oz
By Ruth Plumly Thompson
Dear children: Do you like Elephants? Do you believe in Giants? And do you love all the jolly people of the Wonderful Land of Oz? Well then you'll want to hear about the latest happenings in that delightful Kingdom. All are set forth in true Oz fashion in "Kabumpo in Oz," the sixteenth Oz book. Kabumpo is an Elegant Elephant. He is very old and wise, and has a kindly heart, as have all the Oz folks. In the new book you'll meet Prince Pompa, and Peg Amy, a charming Wooden Doll. There are new countries, strange adventures and the most surprising Box of Magic you have ever heard of. Ruggedo , the wicked old Gnome King, does a lot of mischief with this before Princess Ozma can stop him. Of course Dorothy, the Scarecrow, Scraps, Glinda the Good, Tik-Tok, and other old friends all are alive and busy in the new book. I am just back from the Emerald City with the best of Oz wishes for everybody, but especially you. Philadelphia Spring of 1922 Ruth Plumly Thompson (Summary by Ruth Plumly Thompson)
“Kabumpo in Oz” Metadata:
- Title: Kabumpo in Oz
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1922
Edition Specifications:
- Format: Audio
- Number of Sections: 23
- Total Time: 05:10:49
Edition Identifiers:
- libriVox ID: 7731
Links and information:
- LibriVox Link: LibriVox
- Text Source: Net/titles/thompsonrother09Kabumpo_in_Oz
- Number of Sections: 23 sections
Online Access
Download the Audio Book:
- File Name: kabumpoinoz_1312_librivox
- File Format: zip
- Total Time: 05:10:49
- Download Link: Download link
Online Marketplaces
Find Kabumpo in Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
6Poison Romance And Poison Mysteries
By Charles John Samuel Thompson

A writer and physician, Charles John Samuel Thompson wrote several works on poisons which are still consulted today. He is especially informative on early historical poisons. This book discusses many cases of poisoning, famous and not so, as well as various topics on poisons and poisoning. - Summary by david wales
“Poison Romance And Poison Mysteries” Metadata:
- Title: ➤ Poison Romance And Poison Mysteries
- Author: Charles John Samuel Thompson
- Language: English
- Publish Date: 1904
Edition Specifications:
- Format: Audio
- Number of Sections: 25
- Total Time: 05:05:46
Edition Identifiers:
- libriVox ID: 8292
Links and information:
Online Access
Download the Audio Book:
- File Name: poisonromanceandmysteries_1311_librivox
- File Format: zip
- Total Time: 05:05:46
- Download Link: Download link
Online Marketplaces
Find Poison Romance And Poison Mysteries at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
7Three Bears of Porcupine Ridge
By Jean M. Thompson

Twenty-four delightful tales for children. Meet Timothy Mouse, Little Red Doe, Dame Woodchuck, King Moose and Unk-Wunk the Porcupine with their friends. Adventure and humor are skillfully wrapped around these lovable characters. - Summary by Larry Wilson
“Three Bears of Porcupine Ridge” Metadata:
- Title: Three Bears of Porcupine Ridge
- Author: Jean M. Thompson
- Language: English
- Publish Date: 1913
Edition Specifications:
- Format: Audio
- Number of Sections: 24
- Total Time: 05:46:02
Edition Identifiers:
- libriVox ID: 10111
Links and information:
Online Access
Download the Audio Book:
- File Name: threebears_porcupineridge_1511_librivox
- File Format: zip
- Total Time: 05:46:02
- Download Link: Download link
Online Marketplaces
Find Three Bears of Porcupine Ridge at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
8Calculus Made Easy
By Silvanus P. Thompson

<i>Calculus Made Easy: Being a Very-Simplest Introduction to Those Beautiful Methods of Reckoning which Are Generally Called by the Terrifying Names of the Differential Calculus and the Integral Calculus</i> is is a book on infinitesimal calculus originally published in 1910 by Silvanus P. Thompson, considered a classic and elegant introduction to the subject. (from Wikipedia) <br><br> <i>Some calculus-tricks are quite easy. Some are enormously difficult. The fools who write the textbooks of advanced mathematics—and they are mostly clever fools—seldom take the trouble to show you how easy the easy calculations are. On the contrary, they seem to desire to impress you with their tremendous cleverness by going about it in the most difficult way.<br><br> Being myself a remarkably stupid fellow, I have had to unteach myself the difficulties, and now beg to present to my fellow fools the parts that are not hard. Master these thoroughly, and the rest will follow. What one fool can do, another can.</i> (from the Prologue)
“Calculus Made Easy” Metadata:
- Title: Calculus Made Easy
- Author: Silvanus P. Thompson
- Language: English
- Publish Date: 1914
Edition Specifications:
- Format: Audio
- Number of Sections: 58
- Total Time: 10:07:27
Edition Identifiers:
- libriVox ID: 10205
Links and information:
Online Access
Download the Audio Book:
- File Name: calculus_made_easy_1608_librivox
- File Format: zip
- Total Time: 10:07:27
- Download Link: Download link
Online Marketplaces
Find Calculus Made Easy at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
9Poems
By Francis Thompson

This is the first volume of poems published by the English poet Francis Thompson. It also includes his most famous poem, <i>The Hound of Heaven</i>. - Summary by Carolin
“Poems” Metadata:
- Title: Poems
- Author: Francis Thompson
- Language: English
- Publish Date: 1909
Edition Specifications:
- Format: Audio
- Number of Sections: 21
- Total Time: 01:31:46
Edition Identifiers:
- libriVox ID: 10576
Links and information:
Online Access
Download the Audio Book:
- File Name: poems_thompson_1606_librivox
- File Format: zip
- Total Time: 01:31:46
- Download Link: Download link
Online Marketplaces
Find Poems at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
10Royal Book of Oz (version 3)
By Ruth Plumly Thompson

"Of course, we all knew the Scarecrow was a very fine fellow, but surely we never guessed he ascended from an emperor. Most of us descend from our ancestors, but the Scarecrow really ASCENDED. The Scarecrow had a most exciting and adventurous time on the Silver Isle and Dorothy and the Cowardly Lion just ran out of one adventure into another trying to rescue him. They made some charming new friends in their travels—Sir Hokus of Pokes, the Doubtful Dromedary, and the Comfortable Camel. You'll find them very unusual and likable. They have the same peculiar, delightful and informal natures that we love in all the queer Oz people." From the introduction. When Frank Baum died, he left notes for the next book in the Oz series and they were used to write this delightful story. - Summary by Introduction and Phil Chenevert
“Royal Book of Oz (version 3)” Metadata:
- Title: Royal Book of Oz (version 3)
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1921
Edition Specifications:
- Format: Audio
- Number of Sections: 25
- Total Time: 05:27:29
Edition Identifiers:
- libriVox ID: 11543
Links and information:
Online Access
Download the Audio Book:
- File Name: theroyalbookofoz_1702_librivox
- File Format: zip
- Total Time: 05:27:29
- Download Link: Download link
Online Marketplaces
Find Royal Book of Oz (version 3) at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
11Ozoplaning with the Wizard of Oz
By L. Frank Baum and Ruth Plumly Thompson

The Wizard of Oz has built two beautiful "Ozoplanes" to explore Oz. But the official launch party goes wrong when the Soldier with the Green Whiskers accidentally launches the Oztober into the cloud country of Stratovania! The ruler, Strut of the Strat, makes Jellia Jamb his "Starina" and then sets off to conquer the fascinating country of Oz! Meanwhile the Wizard, Dorothy, the Cowardly Lion and the Scarecrow pile into the Ozpril and chase after the Oztober, but end up having an adventure of their own... This is the 33rd book in the "Oz" series, following in the official canon after L. Frank Baum's original 14 books. The phrase "The Wizard of Oz" was included in the title to coincide with the 1939 release of the film The Wizard of Oz. The focus of the story is primarily on characters who appeared in "The Wonderful Wizard of Oz". (Summary by Beth Thomas)
“Ozoplaning with the Wizard of Oz” Metadata:
- Title: ➤ Ozoplaning with the Wizard of Oz
- Authors: L. Frank BaumRuth Plumly Thompson
- Language: English
- Publish Date: 1939
Edition Specifications:
- Format: Audio
- Number of Sections: 21
- Total Time: 04:03:32
Edition Identifiers:
- libriVox ID: 12461
Links and information:
Online Access
Download the Audio Book:
- File Name: ozoplaning_1803_librivox
- File Format: zip
- Total Time: 04:03:32
- Download Link: Download link
Online Marketplaces
Find Ozoplaning with the Wizard of Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
12Handy Mandy in Oz
By Ruth Plumly Thompson

On many a day had Handy, the Goat Girl of Mern, pursued her goats up and down the rocky eminences of her native mountain. And never—NEVER—in her fourteen or so years' experience had she been blown up by a mountain spring. But there comes, in every one's experience a day which is unlike every other day, and so it was with the Goat Girl. As she was pursuing What-a-butter, her favorite goat, there was a sudden crash, a whish, and up flew the slab of rock on which she was standing, up and away. The adventures into which she was carried by this simple though awefull beginning take a whole book to relate. How she met Nox the Royal Ox of Keretaria, how together they went in search of little King Kerry, how at last they rescued him and found themselves feted guests of Ozma of Oz, all these things you must read for yourselves. - Summary by the author and Phil chenevert
“Handy Mandy in Oz” Metadata:
- Title: Handy Mandy in Oz
- Author: Ruth Plumly Thompson
- Language: English
Edition Specifications:
- Format: Audio
- Number of Sections: 21
- Total Time: 04:07:30
Edition Identifiers:
- libriVox ID: 12583
Links and information:
Online Access
Download the Audio Book:
- File Name: handymandyinoz_1801_librivox
- File Format: zip
- Total Time: 04:07:30
- Download Link: Download link
Online Marketplaces
Find Handy Mandy in Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
13Selected Poems of Francis Thompson
By Francis Thompson

Francis Thompson, an English poet and author, is best known for his poem "Hound of Heaven," included in this selection of his poems. After submitting some poems to the magazine "Merrie England," the editors, Wilfrid and Alice Meynell, became his benefactors and published his first volume, "Poems." Wilfrid Meynell selected these poems form Thompson's works and provides an enlightening biographical sketch. At the end of this volume are a selection of tributes to Thompson ranging from newspaper reviews to an appreciation from G.K Chesterton. - Summary by Larry Wilson
“Selected Poems of Francis Thompson” Metadata:
- Title: ➤ Selected Poems of Francis Thompson
- Author: Francis Thompson
- Language: English
- Publish Date: 1908
Edition Specifications:
- Format: Audio
- Number of Sections: 52
- Total Time: 03:52:17
Edition Identifiers:
- libriVox ID: 12606
Links and information:
Online Access
Download the Audio Book:
- File Name: selectedpoemsoffrancisthompson_1809_librivox
- File Format: zip
- Total Time: 03:52:17
- Download Link: Download link
Online Marketplaces
Find Selected Poems of Francis Thompson at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
14Water Wonders Every Child Should Know
By Jean M. Thompson

Water: essential for life and in much of the world, we take it for granted. In this work, Jean Thompson explains various aspects of the water cycle in simple terms, for the benefit of young readers with enquiring minds. Listeners are referred to the text for the microphotographs described.
“Water Wonders Every Child Should Know” Metadata:
- Title: ➤ Water Wonders Every Child Should Know
- Author: Jean M. Thompson
- Language: English
- Publish Date: 1907
Edition Specifications:
- Format: Audio
- Number of Sections: 6
- Total Time: 01:46:30
Edition Identifiers:
- libriVox ID: 12753
Links and information:
Online Access
Download the Audio Book:
- File Name: water_wonders_1808_librivox
- File Format: zip
- Total Time: 01:46:30
- Download Link: Download link
Online Marketplaces
Find Water Wonders Every Child Should Know at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
15Wishing Horse of Oz
By Ruth Plumly Thompson

Magic wishing emeralds mysteriously arrive in the little kingdom of Skampavia. King Skamperoo immediately confiscates them and wishes to become the Emperor of Oz, with his magic horse Chalk as his advisor. All the residents of Oz are enchanted to forget Ozma and their own rulers, except for Dorothy and Pigasus the flying pig. Can Dorothy and Pigasus break the enchantment and rescue Princess Ozma? Will they forge an unlikely alliance with the Gnome King? And who is the real owner and possessor of the secret of the wishing emeralds?<br><br>The Wishing Horse of Oz is the twenty-ninth in the series of Oz books created by L. Frank Baum. (Summary by Beth Thomas)
“Wishing Horse of Oz” Metadata:
- Title: Wishing Horse of Oz
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1935
Edition Specifications:
- Format: Audio
- Number of Sections: 21
- Total Time: 04:31:34
Edition Identifiers:
- libriVox ID: 12759
Links and information:
Online Access
Download the Audio Book:
- File Name: wishinghorseofoz_1903_librivox
- File Format: zip
- Total Time: 04:31:34
- Download Link: Download link
Online Marketplaces
Find Wishing Horse of Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
16Captain Salt in Oz
By Ruth Plumly Thompson

A voyage on the famous Nonestic Ocean! What could be more thrilling than that? We—many of us—have taken trips on the prosaic Atlantic or even Pacific, but have we found a SEA FOREST with flying fish and swimming birds? Have we been pursued by a real SEA SERPENT, or had our ship transfixed by the immense ivory tusk of a NARWHAL? Have we come upon the glittering island of PEAKENSPIRE, or made friends with a charming talking hippopotamus? Yet all these things and more befall Captain Salt, one time Pirate and now Royal Explorer of Oz, and his merry crew. They come back with their hold bursting with unique and fascinating specimens, with their chart crowded with new islands, all claimed for Ozma of Oz! Captain Salt in Oz (1936) is the thirtieth in the series of Oz novels created by L. Frank Baum. (Original publisher's book summary)
“Captain Salt in Oz” Metadata:
- Title: Captain Salt in Oz
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1964
Edition Specifications:
- Format: Audio
- Number of Sections: 21
- Total Time: 05:02:04
Edition Identifiers:
- libriVox ID: 12788
Links and information:
Online Access
Download the Audio Book:
- File Name: captainsalt_1807_librivox
- File Format: zip
- Total Time: 05:02:04
- Download Link: Download link
Online Marketplaces
Find Captain Salt in Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
17Silver Princess in Oz
By Ruth Plumly Thompson

Young King Randy of Regalia is visited by his old friend, Kabumpo, the Elegant Elephant of Pumperdink. Together, they set out to visit their friend Jinnicky the Red Jinn in the Land of Ev. On the way, they meet Planetty, the silver Princess from Anuther Planet, and her fire-breathing thunder colt. When they reach Jinnicky's palace, they find that Jinnicky has been deposed and enchanted by an untrustworthy slave! Can Randy and Kabumpo defeat Gludwig and restore peace and justice to Ev? The Silver Princess in Oz (1938) is the thirty-second of the Oz books created by L. Frank Baum and his successors, and the eighteenth written by Ruth Plumly Thompson. - Summary by Beth Thomas and Wikipedia
“Silver Princess in Oz” Metadata:
- Title: Silver Princess in Oz
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1938
Edition Specifications:
- Format: Audio
- Number of Sections: 21
- Total Time: 04:06:28
Edition Identifiers:
- libriVox ID: 13132
Links and information:
Online Access
Download the Audio Book:
- File Name: silver_princess_oz_1808_librivox
- File Format: zip
- Total Time: 04:06:28
- Download Link: Download link
Online Marketplaces
Find Silver Princess in Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
18Kabumpo in Oz (version 2)
By Ruth Plumly Thompson

An elephant in Oz? You bet! The tiny kingdom of Pumperdink has what no neighboring kingdom has: an Elegant Elephant in court, and his name is Kabumpo. He is very proud of his kingdom, his elegance and tends to be just the smallest bit pompous. On the other hand, he loves the young prince Pompo and goes with him in a desperate search to save their kingdom from disappearing. Yes, the prince must find the 'proper princess' and marry her within 7 days or the entire kingdom and everyone in it will be gone. Such a great responsibility on such a youth is hard to bear but Kabumpo helps a lot. Naturally the evil gnome Ruggedo is involved deep underneath but this will all be explained in the exciting chapters. Will he find the proper princess? will he squished by the giant? You must listen to find out and I promise it will be a wild ride. Summary by phil Chenevert
“Kabumpo in Oz (version 2)” Metadata:
- Title: Kabumpo in Oz (version 2)
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 0
Edition Specifications:
- Format: Audio
- Number of Sections: 22
- Total Time: 05:31:21
Edition Identifiers:
- libriVox ID: 13147
Links and information:
Online Access
Download the Audio Book:
- File Name: kabumpoinozversion2_1808_librivox
- File Format: zip
- Total Time: 05:31:21
- Download Link: Download link
Online Marketplaces
Find Kabumpo in Oz (version 2) at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
19Cowardly Lion of Oz (version 2)
By Ruth Plumly Thompson
Mustafa of Mudge has heard of the famous Cowardly Lion of Oz, and decides to capture him and put him into a zoo! He enlists the help of Bob Up and a clown called Notta Bit More - the master of disguise! The Cowardly Lion meanwhile travels though Oz and meets a stone man, who offers to turn the Cowardly Lion into stone: after all, a stone lion doesn't feel fear! Is this the solution to the Cowardly Lion's quest for courage? Or is it a trap, and does the stone man want to trick him for reasons of his own? The Cowardly Lion of Oz was published in 1923, and is the seventeenth in the Oz series created by L. Frank Baum. It is the third by Ruth Plumly Thompson, and comes directly after "Kabumpo in Oz". The main themes are disguises, honesty, and being true to who you are. (Summary by Beth Thomas)
“Cowardly Lion of Oz (version 2)” Metadata:
- Title: ➤ Cowardly Lion of Oz (version 2)
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1923
Edition Specifications:
- Format: Audio
- Number of Sections: 23
- Total Time: 05:16:30
Edition Identifiers:
- libriVox ID: 13747
Links and information:
- LibriVox Link: LibriVox
- Text Source: Org/details/TheCowardlyLionOfOz/page/n11
- Number of Sections: 23 sections
Online Access
Download the Audio Book:
- File Name: cowardlylionofoz_version2_1905_librivox
- File Format: zip
- Total Time: 05:16:30
- Download Link: Download link
Online Marketplaces
Find Cowardly Lion of Oz (version 2) at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
20Cowardly Lion of Oz
By Ruth Plumly Thompson

The Cowardly Lion, always fearful, has become even more afraid than usual and is convinced that he has lost the courage the Wizard of OZ gave him man years ago. To remedy this he decides to follow the dubious advice from the Scrapwork Girl, to 'find someone who has courage and swallow him up'. Unfortunately the King of the little known country of Mudge wants him captured and added to his lion collection. Naturally new characters, all funny and fun, join in the collision of intents and purposes as only in t he magical land of OZ can they do so. Exciting, funny and fabulous this tale will enchant you with its whimsy and wit. Will our dear Cowardly Lion actually swallow someone:? Will he be captured and added to the zoo of the Mudgers? Listen and be delighted with it all works out. - Summary by philc
“Cowardly Lion of Oz” Metadata:
- Title: Cowardly Lion of Oz
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1923
Edition Specifications:
- Format: Audio
- Number of Sections: 22
- Total Time: 05:35:18
Edition Identifiers:
- libriVox ID: 13906
Links and information:
Online Access
Download the Audio Book:
- File Name: thecowardlylionofoz_1904_librivox
- File Format: zip
- Total Time: 05:35:18
- Download Link: Download link
Online Marketplaces
Find Cowardly Lion of Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
21Grampa In Oz
By Ruth Plumly Thompson
Another great book in the world of Oz, in which King Fumbo of Ragbad loses his head in a storm and Prince Tatters, accompanied by the wise and wonderful old soldier Grampa, sets off to find the king's head, a fortune, and a princess. With Bill, a live iron weathercock, they visit a Wizard's Garden and discover Urtha, a lovely girl made all of flowers -- and proceed to fall, swim, explode, sail, and fly above and below Oz and Ev. Grampa and Co. eventually meet Dorothy herself, traveling with a Forgetful Poet in search of the missing princess of Perhaps City who has been condemned to marry a monster! Ruth Plumly Thompson really hits her stride in this book, telling the OZ story with her own dash and style that will make you smile and outright laugh each chapter. The puns are continuous and those will make you groan!
“Grampa In Oz” Metadata:
- Title: Grampa In Oz
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1924
Edition Specifications:
- Format: Audio
- Number of Sections: 22
- Total Time: 04:56:59
Edition Identifiers:
- libriVox ID: 14681
Links and information:
- LibriVox Link: LibriVox
- Text Source: Org/grampa_in_oz/pages/005_grandpa_in_oz
- Number of Sections: 22 sections
Online Access
Download the Audio Book:
- File Name: grampainoz_2001_librivox
- File Format: zip
- Total Time: 04:56:59
- Download Link: Download link
Online Marketplaces
Find Grampa In Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
22Silver Princess in Oz (version 2)
By Ruth Plumly Thompson

Another Oz book! Yes! Lots of unlikely characters and tons of fun. In this story, young King Randy of Regalia is visited by his old friend, Kabumpo, the Elegant Elephant of Pumperdink. Together, they set out to visit their friend Jinnicky the Red Jinn in the Land of Ev.. On the way, they meet Planetty, the silver Princess from Anuther Planet, and her fire-breathing colt, Thun. When they reach Jinnicky's palace, they find that Jinnicky has been deposed and enchanted by an untrustworthy slave. - Summary by phil chenvert and wiki
“Silver Princess in Oz (version 2)” Metadata:
- Title: ➤ Silver Princess in Oz (version 2)
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 0
Edition Specifications:
- Format: Audio
- Number of Sections: 20
- Total Time: 04:19:50
Edition Identifiers:
- libriVox ID: 15440
Links and information:
Online Access
Download the Audio Book:
- File Name: thesilverprincess_in_oz_2008_librivox
- File Format: zip
- Total Time: 04:19:50
- Download Link: Download link
Online Marketplaces
Find Silver Princess in Oz (version 2) at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
23Alice of Old Vincennes
By Maurice Thompson

This entertaining book of adventure, love and war was a Bestseller in 1900 and 1901. The heroine Alice Roussillon is a brave young woman who grew up in a small town on the Wabash River in Indiana during the revolutionary war. The characters are all distinctive and compelling. It gives a great insight into the frontier life of that era and includes true historical accounts and personages such as the wicked Lieutenant Governor Henry Hamilton and George Rogers Clarke who was responsible for expelling the British from Fort Sackville in Vincennes in 1779. From the foreword: " "Accept, then, this book, which to those who care only for history will seem but an idle romance, while to the lovers of romance it may look strangely like the mustiest history." - Summary by Celine Major
“Alice of Old Vincennes” Metadata:
- Title: Alice of Old Vincennes
- Author: Maurice Thompson
- Language: English
- Publish Date: 1900
Edition Specifications:
- Format: Audio
- Number of Sections: 22
- Total Time: 10:35:11
Edition Identifiers:
- libriVox ID: 15543
Links and information:
Online Access
Download the Audio Book:
- File Name: alice_of_old_vincennes_2009_librivox
- File Format: zip
- Total Time: 10:35:11
- Download Link: Download link
Online Marketplaces
Find Alice of Old Vincennes at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
24Ozoplaning with the Wizard of Oz (version 2)
By Ruth Plumly Thompson

The wonderful but quirky Wizard of Oz has invented a plane to go strato-sphering. Zooming among the clouds and shooting stars above OZ certainly produces a host of strange adventures. This last book about OZ by Ruth Thompson includes many well known characters of that fairy land like the Wizard, Dorothy, The Tin Man, and The Cowardly Lion but has some that have been a bit overlooked before like Jellia Jam, Ozma's chief maid-in-waiting and The Soldier With Green Whiskers. A high flying tale with danger and excitement! But don't worry, everyone will come through in the end just fine. - I promise! Summary by phil chenevert
“Ozoplaning with the Wizard of Oz (version 2)” Metadata:
- Title: ➤ Ozoplaning with the Wizard of Oz (version 2)
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 0
Edition Specifications:
- Format: Audio
- Number of Sections: 20
- Total Time: 04:32:18
Edition Identifiers:
- libriVox ID: 16043
Links and information:
Online Access
Download the Audio Book:
- File Name: ozoplaningwiththewizardofoz_2103_librivox
- File Format: zip
- Total Time: 04:32:18
- Download Link: Download link
Online Marketplaces
Find Ozoplaning with the Wizard of Oz (version 2) at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
25Lost King of Oz
By Ruth Plumly Thompson

"Princess Ozma has ruled so wisely and happily in the wonderful Land of Oz for so long that most of us have forgotten the strange story of the Lost King of Oz—Ozma's father. As everyone in Oz knows, the King was transformed from his royal self by Mombi, the wicked old Gilliken witch, and lost his throne and his crown when he, himself, was lost. In this new Oz book the Royal Historian tells how Snip, the little buttonboy, and Pajuka, the great white goose—who had been the lost King's prime minister in the good old days—set out from the jolly Kingdom of Kimbaloo to find the King and to petition Princess Ozma to punish Mombi for her wicked mischief. Princess Dorothy meets Snip and Pajuka, as she returns from a sudden and curious visit to Hollywood with a funny and friendly moving picture dummy, and the four adventurers are whisked to the Emerald City by Kabumpo, the Elegant Elephant. At the Court of Ozma the Scarecrow and the Wizard of Oz join in the attempt to find the Lost King, and the surprising events that follow make a truly exciting Oz story. After many thrilling attempts, the mystery of the Lost King is magically solved, but you must read for yourself to find out all about it." - Summary by The author
“Lost King of Oz” Metadata:
- Title: Lost King of Oz
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 0
Edition Specifications:
- Format: Audio
- Number of Sections: 21
- Total Time: 04:58:21
Edition Identifiers:
- libriVox ID: 16904
Links and information:
Online Access
Download the Audio Book:
- File Name: lost_king_of_oz_2109_librivox
- File Format: zip
- Total Time: 04:58:21
- Download Link: Download link
Online Marketplaces
Find Lost King of Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
26Life and Glories of St. Joseph
By Edward Healy Thompson
A wonderful work on the life of St. Joseph, the true husband of the Virgin Mary, and foster-father of Jesus Christ. - Summary by Mozartjr
“Life and Glories of St. Joseph” Metadata:
- Title: Life and Glories of St. Joseph
- Author: Edward Healy Thompson
- Language: English
- Publish Date: 1888
Edition Specifications:
- Format: Audio
- Number of Sections: 51
- Total Time: 16:55:18
Edition Identifiers:
- libriVox ID: 17156
Links and information:
- LibriVox Link: LibriVox
- Text Source: Org/details/lifegloriesofstj00thomuoft/mode/2up
- Number of Sections: 51 sections
Online Access
Download the Audio Book:
- File Name: thelifeandgloriesofstjoseph_2402_librivox
- File Format: zip
- Total Time: 16:55:18
- Download Link: Download link
Online Marketplaces
Find Life and Glories of St. Joseph at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
27Captain Salt in Oz (Version 2)
By Ruth Plumly Thompson

A voyage on the famous Nonestic Ocean! What could be more thrilling than that? We—many of us—have taken trips on the prosaic Atlantic or even Pacific, but have we found a SEA FOREST with flying fish and swimming birds? Have we been pursued by a real SEA SERPENT, or had our ship transfixed by the immense ivory tusk of a NARWHAL? Have we come upon the glittering island of PEAKENSPIRE, or made friends with a charming talking hippopotamus? Yet all these things and more befall Captain Salt, one time Pirate and now Royal Explorer of Oz, and his merry crew. They come back with their hold bursting with unique and fascinating specimens, with their chart crowded with new islands, claimed for Ozma, and drawn so realistically by the delightful little boy Tandy, Cabin Boy and Artist of the Expedition.
“Captain Salt in Oz (Version 2)” Metadata:
- Title: Captain Salt in Oz (Version 2)
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 0
Edition Specifications:
- Format: Audio
- Number of Sections: 21
- Total Time: 05:20:05
Edition Identifiers:
- libriVox ID: 17172
Links and information:
Online Access
Download the Audio Book:
- File Name: captain_salt_in_oz_2111_librivox
- File Format: zip
- Total Time: 05:20:05
- Download Link: Download link
Online Marketplaces
Find Captain Salt in Oz (Version 2) at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
28Hungry Tiger of Oz
By Ruth Plumly Thompson

The Hungry Tiger gets a chance to eat LOTS of people. What will happen!?? Will his conscience stop him or will he finally stop his stomach from rumbling all the time? The wicked (and illegal) king of Rash puts everyone into prison and has run out of space so he needs a way to get rid of them. His equally nasty adviser suggests enticing the Hungry Tiger to do the job. The Hungry Tiger accepts, not knowing that the 'criminals' are really innocent citizens. We meet The Vegetable Man in this exciting story, a wonderful addition to all the colorful characters in Oz. A fun filled and exciting book. - Summary by phil chenevert
“Hungry Tiger of Oz” Metadata:
- Title: Hungry Tiger of Oz
- Author: Ruth Plumly Thompson
- Language: English
Edition Specifications:
- Format: Audio
- Number of Sections: 20
- Total Time: 04:30:24
Edition Identifiers:
- libriVox ID: 19003
Links and information:
Online Access
Download the Audio Book:
- File Name: thehungrytigerofoz_2303_librivox
- File Format: zip
- Total Time: 04:30:24
- Download Link: Download link
Online Marketplaces
Find Hungry Tiger of Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
29Wishing Horse of Oz (Version 2)
By Ruth Plumly Thompson

The magical kingdom of Oz is happily doing all the wonderful things it does in peace and happiness, not knowing that a far off evil and grasping king with the name of Skamperoo, is planning to make all of them his subjects and slaves by the use of a magic set of emeralds. And a horse of course. A horse that he got by magic but a horse with a mind of its own. What mischief will come to the sweet inhabitants of Oz?
“Wishing Horse of Oz (Version 2)” Metadata:
- Title: ➤ Wishing Horse of Oz (Version 2)
- Author: Ruth Plumly Thompson
- Language: English
Edition Specifications:
- Format: Audio
- Number of Sections: 20
- Total Time: 05:21:13
Edition Identifiers:
- libriVox ID: 19372
Links and information:
Online Access
Download the Audio Book:
- File Name: thewishinghorseofozversion_2_2307_librivox
- File Format: zip
- Total Time: 05:21:13
- Download Link: Download link
Online Marketplaces
Find Wishing Horse of Oz (Version 2) at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
30Gnome King of Oz
By Ruth Plumly Thompson

The Gnome King has escaped from Runaway Island and Scraps, the Patchwork Girl has disappeared from the Emerald City. Oh dear!! What exciting things are going on now in that magical and very, very weird land of OZ? This book continues the story of OZ and it's amazing inhabitants. Will Ozma be ousted as ruler? What will the Gnome King do? Come along and find out. - Summary by phil chenevert
“Gnome King of Oz” Metadata:
- Title: Gnome King of Oz
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1927
Edition Specifications:
- Format: Audio
- Number of Sections: 20
- Total Time: 04:25:49
Edition Identifiers:
- libriVox ID: 19544
Links and information:
Online Access
Download the Audio Book:
- File Name: gnomekingofoz_2501_librivox
- File Format: zip
- Total Time: 04:25:49
- Download Link: Download link
Online Marketplaces
Find Gnome King of Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
31Nothing More Than Murder
By Jim Thompson
Joe Wilmot is a big fish in a small pond, running the premiere movie house in town with a wife who hates him and a housemaid who wants to get in his pants. With his wife putting pressure on him to cut her loose and a major competitor wanting to put him out of business, what's a little murder to get a fella out of a jam? From celebrated crime author Jim Thompson (The Killer Inside Me, The Getaway, The Grifters) comes this cutthroat portrait of a man pushed to his breaking point.(Summary by Ben Tucker )
“Nothing More Than Murder” Metadata:
- Title: Nothing More Than Murder
- Author: Jim Thompson
- Language: English
- Publish Date: 1949
Edition Specifications:
- Format: Audio
- Number of Sections: 32
- Total Time: 04:51:48
Edition Identifiers:
- libriVox ID: 19706
Links and information:
- LibriVox Link: LibriVox
- Text Source: Hathitrust
- Wikipedia Link: Wikipedia
- Number of Sections: 32 sections
Online Access
Download the Audio Book:
- File Name: nothingmorethanmurder_2309_librivox
- File Format: zip
- Total Time: 04:51:48
- Download Link: Download link
Online Marketplaces
Find Nothing More Than Murder at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
32Nobody's Rose
By Adele Eugenia Thompson

In the hustle and bustle of the big city, nobody heard the small cry of a child. A policeman finally stopped and asked her where she lived. Posey has been homeless since her mother died, but her life is about to change for the better.
“Nobody's Rose” Metadata:
- Title: Nobody's Rose
- Author: Adele Eugenia Thompson
- Language: English
- Publish Date: 1912
Edition Specifications:
- Format: Audio
- Number of Sections: 24
- Total Time: 05:37:24
Edition Identifiers:
- libriVox ID: 20292
Links and information:
Online Access
Download the Audio Book:
- File Name: nobodysrose_2409_librivox
- File Format: zip
- Total Time: 05:37:24
- Download Link: Download link
Online Marketplaces
Find Nobody's Rose at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
33Giant Horse of Oz
By Ruth Plumly Thompson

In the Ozure Isles in the blue Munchkin Country, the kindom is being terrorized by a horrible monster called Quiberon. After 20 years of horror the beast demands a mortal maiden to be sent to him or the kingdom will perish. But mortol maidens are in short supply in the Land of Oz (Dorothy Gale, Betsy Bobbin, and Trot), so the Ozureians seeks Tattypoo the Good Witch of the North for help. Many ozzy adventures happen in locations such as Cave City, the Roundabouties, and the Shutterfaces, not to mention High Boy the long legged horse! - Summary by T. Craft
“Giant Horse of Oz” Metadata:
- Title: Giant Horse of Oz
- Author: Ruth Plumly Thompson
- Language: English
- Publish Date: 1928
Edition Specifications:
- Format: Audio
- Number of Sections: 20
- Total Time: 04:03:45
Edition Identifiers:
- libriVox ID: 21826
Links and information:
- LibriVox Link: LibriVox
- Text Source: Org/ebooks/73170 - Download text file/s.
- Number of Sections: 20 sections
Online Access
Download the Audio Book:
- File Name: gianthorseofoz_2508_librivox
- File Format: zip
- Total Time: 04:03:45
- Download Link: Download link
Online Marketplaces
Find Giant Horse of Oz at online marketplaces:
- Amazon: Audiable, Kindle and printed editions.
- Ebay: New & used books.
Buy “At That Point In Time” online:
Shop for “At That Point In Time” on popular online marketplaces.
- Ebay: New and used books.