Advanced .NET Debugging #2
I’m continuing to read the excellent Advanced .NET Debugging by Mario Hewardt. Last time I looked at finding the entry point of a native image. This time around I’ll be investigating the launch of a managed image by Windows
.
Prerequisites
- A hex viewer
- I used the PE CLR Viewer (disclaimer: I created this truly ugly looking website)
WinDbg #2 - The blocked async
Today’s exercise is not an exercise! The investigation I’m about to describe was triggered by a production outage affecting multiple API
s - albeit not at the same time - at a customer. For obvious reasons I’ll not be able to share the code and will have to alter / obfuscate some of the commands’ results. I still think this is a valuable exercise as it is a classic example of an easy to make mistake leading to a catastrophic result.
The other interesting point is that I had no idea what the issue was so I’ll not be following a script as I did in the first instalment.
Continue readingCake build
30th of Jan 2022: Many .NET open-source have now migrated to GitHub Actions. I hence decided to include it in this post.
25th of Sep 2021: I decided to remove Travis CI from this post. Travis CI recently poorly handled a security vulnerability and security is of paramount importance when it comes to build systems.
5th of Jan 2019: a lot has been happening since I initially wrote this post. Azure DevOps
released a free tier for open source projects, the Cake
and GitVersion
contributors have been hard at work to take advantage of the latest features of .NET Core
. So many things have changed that I decided to update this post to reflect the current state of affairs (inclusion of Azure DevOps
, upgrade to .NET Core 2.2
, utilisation of .NET Core global tools
and removing the Mono
requirement on Unix
platforms).
As a developer I’m amazed by the number of free tools and services available. I wanted to create an end-to-end demo of a CI/CD
pipeline that would include:
- Trigger a build on commit
- Use semantic versioning
- Run tests
- Publish test results
- Create NuGet packages
- Publish the NuGet packages
- Create a GitHub release
For my purpose I wanted anonymous users to have access to a read-only view. AppVeyor and GitHub Actions are the most popular choices for .NET
open-source projects. CircleCI seems to have dropped in popularity. Azure DevOps released (and then unreleased) a free and unlimited plan for open source projects. As I had both CircleCI and Azure DevOps working, I decided to keep them. In this post I’ll be leveraging the four platforms so that I can highlight their pros and cons.
Advanced .NET Debugging #1
After eyeing it for a while I finally decided to buy Advanced .NET Debugging by Mario Hewardt. I’ve been studying WinDbg
for some time and consider myself somewhere between beginner and intermediate level. To my dismay I got stuck on the first excercise! Luckily I didn’t give up and finally stumbled on a blog post that unblocked me. This series has for goal to make Advanced .NET Debugging more accessible to people - quite like me - that haven’t grasped all the concepts yet.
Prerequisites
- A hex viewer
- I used the hexdump for VSCode Visual Studio Code extension
- WinDbg
- Windows