Claude Skills Guide

Claude Code Segfault Core Dump Analysis Workflow Guide

Segmentation faults remain one of the most frustrating runtime errors in native applications. When your program crashes with a segfault, you get minimal information—just a signal and an exit code. The actual debugging work begins with the core dump, and this is where Claude Code becomes invaluable.

This guide walks you through a practical workflow for analyzing segfault core dumps using Claude Code and command-line tools. You’ll learn to configure core dump capture, extract meaningful stack traces, and identify root causes efficiently.

Configuring Core Dump Capture

Before you can analyze anything, you need core dumps to exist. On Linux systems, the ulimit command controls core dump generation. Add this to your shell profile for persistent configuration:

# Enable unlimited core dump size
ulimit -c unlimited

# Set the core dump pattern (includes PID and timestamp)
echo 'core.%e.%p' | sudo tee /proc/sys/kernel/core_pattern

On macOS, the configuration differs slightly. Use launchctl to enable core dumps system-wide:

sudo launchctl limit core 0 0

Once configured, run your crashing program. The core dump file appears in the working directory or the location specified by your core pattern.

Generating a Minimal Reproducible Case

When debugging segfaults, having a reproducible case speeds up analysis dramatically. If you’re developing with the tdd skill, create a test case that triggers the crash:

/tdd write a C test case that reproduces a null pointer dereference in a linked list traversal

The tdd skill generates focused test cases that isolate the problematic code path. This approach works well when combined with the frontend-design skill for building test harnesses that display crash states visually.

Loading and Analyzing Core Dumps with GDB

The GNU Debugger (GDB) remains the primary tool for core dump analysis. Start a debugging session with your core file:

gdb ./your-program core. program.pid

Once loaded, these commands extract the essential information:

# Show the crash location
bt

# Examine the instruction that caused the crash
x/i $pc

# Print local variables
info locals

# Examine the faulting memory address
x/10x $rsp - 0x20

Claude Code can interpret these outputs directly. Paste the backtrace into your conversation and ask for analysis:

The program crashed at 0x0000555555555149 in delete_node(). 
The stack shows: main -> process_list -> delete_node -> free()
The faulting address was 0x0 (null pointer).

Automating Analysis with Claude Code Skills

Several Claude skills accelerate core dump analysis workflows. The pdf skill helps when you need to document findings in reports:

/pdf create a crash analysis report with the stack trace and memory dump details

The supermemory skill stores patterns from your previous debugging sessions. If you’ve encountered similar crashes before, query your memory:

/supermemory Have you seen segfaults in linked list delete operations before?

This is particularly useful when debugging recurring issues across a codebase.

Interpreting Common Segfault Patterns

Most segfaults fall into recognizable categories. Here’s how to identify each:

Null pointer dereference: The crash address is near zero. Check the register that held the pointer:

print (char*)$rdi

Use-after-free: The address points to freed memory. Use GDB’s heap examination:

heap
info breakpoints

Stack overflow: The crash occurs near stack boundaries. Check the stack pointer:

print $rsp
info threads

When you encounter these patterns, describe them to Claude Code for further investigation:

The backtrace shows use-after-free in the string handler. 
What memory management patterns in C typically cause this?

Practical Example: Debugging a C++ Application

Consider a C++ application crashing during file processing. Here’s the complete workflow:

  1. Capture the core: Configure ulimit, run the program, reproduce the crash
  2. Load in GDB: gdb ./processor core.processor.12345
  3. Extract information: Run bt full to get complete context
  4. Analyze with Claude: Paste the output and ask for root cause analysis

A typical backtrace might reveal:

#0  0x00007ffff7a5e4b5 in __GI_raise () from /lib64/libc.so.6
#1  0x00007ffff7a5a890 in __GI_abort () from /lib64/libc.so.6
#2  0x00005555555568a3 in handle_file(char*) ()
#3  0x0000555555556b12 in main ()

Claude Code identifies that the crash occurred in handle_file(), likely due to an unhandled error condition. The abort call suggests an assertion failure or failed invariant check.

Preventing Future Crashes

After identifying the root cause, implement fixes systematically:

The xlsx skill helps track crash history and patterns across versions:

/xlsx create a bug tracking spreadsheet with columns for crash type, root cause, and fix date

Conclusion

Core dump analysis doesn’t have to be a tedious manual process. By combining GDB’s raw analysis power with Claude Code’s contextual understanding, you can identify root causes faster and document your findings more thoroughly.

The key is having core dumps configured before crashes happen, extracting actionable information through targeted GDB commands, and using Claude skills like supermemory for pattern recognition across debugging sessions.

When segfaults occur, this workflow transforms a cryptic crash into a solvable problem.

Built by theluckystrike — More at zovo.one