Can I know which thread change the global variable (including malloced from heap)'s value from core dump file?
No.
A core dump records current state of the process memory at crash point, not the history of it. Just as looking at a photo of a spray-painted graffiti on the wall you can't tell who painted it, looking at NULL
in a core dump will not tell you who put it there.