Skip to content

Instantly share code, notes, and snippets.

@grzhan
Last active December 6, 2021 11:28
Show Gist options
  • Save grzhan/62c66408023cf390df779a73861ee59b to your computer and use it in GitHub Desktop.
Save grzhan/62c66408023cf390df779a73861ee59b to your computer and use it in GitHub Desktop.
create .netcore coredump file in docker container
#! /bin/bash
# reference: https://docs.microsoft.com/en-us/dotnet/core/diagnostics/debug-linux-dumps
# enables verbose mode
set -x
# declare helper variables
DOTNET_VERSION=$(ls /usr/share/dotnet/shared/Microsoft.NETCore.App/)
DOTNET_DIR="/usr/share/dotnet/shared/Microsoft.NETCore.App/$DOTNET_VERSION"
# clean up
[ -e /tmp/coredump.tar.gz ] && rm /tmp/coredump.tar.gz
[ -e /tmp/coredump.1 ] && rm /tmp/coredump.1
[ -e /tmp/libcoreclr.so ] && rm /tmp/libcoreclr.so
[ -e /tmp/libmscordaccore.so ] && rm /tmp/libmscordaccore.so
[ -e /tmp/dotnet ] && rm /tmp/dotnet
# create dotnet core minidump with heap
$DOTNET_DIR/createdump 1
# create compressed file from dump file and required .net core binaries
cp $DOTNET_DIR/libcoreclr.so /tmp/libcoreclr.so
cp $DOTNET_DIR/libmscordaccore.so /tmp/libmscordaccore.so
cp /usr/share/dotnet/dotnet /tmp/dotnet
tar -C /tmp -c -v -z -f /tmp/coredump.tar.gz coredump.1 libcoreclr.so libmscordaccore.so dotnet
# clean up
[ -e /tmp/coredump.1 ] && rm /tmp/coredump.1
[ -e /tmp/libcoreclr.so ] && rm /tmp/libcoreclr.so
[ -e /tmp/libmscordaccore.so ] && rm /tmp/libmscordaccore.so
[ -e /tmp/dotnet ] && rm /tmp/dotnet
# disable verbose mode
set +x
echo "script is done, you can find tarbar file at '/tmp/coredump.tar.gz'"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment