Vala cannot provide type safety for callbacks which are connected by automaticallyGtkBuilder, so you have to be careful to provide the correct definition. See the Loading User Interface from XML File section of the GTK+ samples on the Vala wiki. Specifically, this part:
Attention: When using Gtk.Builder's signal auto-connection feature all handlers must have the full signatures of their corresponding signals, including the signal sender as first parameter. Otherwise you will get segmentation faults at runtime.
So your method should be:
public void step_clicked (Gtk.Button button) {
stderr.printf("%d\n", pc);
}
You can make the button parameter nullable if you want so you can still invoke it from main() by passing null.
However, the instance is still in the wrong place, as is also explained in that link:
If you want the callback methods to be instance methods instead of static methods you have to annotate them with the [CCode(instance_pos=-1)] attribute and pass the instance to connect_signals(...) instead of null:
You're passing the instance to connect_signals, but you're missing the CCode annotation. So really what you want is:
[CCode (instance_pos = -1)]
public void step_clicked (Gtk.Button button) {
stderr.printf("%d\n", pc);
}