The values for b and cseem OK, but due to optimizations, especially around such functions as strcmp() that may undergo intense macro expansion, the actual values might not be available to the debugger.

The problem might be easy to spot in the source code, you should post the source to the offending function.

The value 0x7f58d3a36b89 printed by gdb for variable b is surprisingly large! You could try and modify your code this way:

static char bb = *b;
static char cc = *c;
a = strcmp(b, c);

Forcing an access to b and c before the strcmp() may move the crash up and let you verify if b is indeed what gdb prints it to be.