A method for a first computing device to debug a program running in a second computing device, comprising: obtaining, by the first computing device, a master core dump file generated by the second computing device, wherein the master core dump file comprises an index list, each entry of the index list corresponds to a slave core dump file of one or more slave core dump files generated or to be generated by the second computing device, and wherein each of the one or more slave core dump files includes at least one item of dumped data related to the program; selecting, by the first computing device, a first slave core dump file from the one or more slave core dump files according to information in the index list; obtaining, by the first computing device, the selected first slave core dump file; and assembling, by the first computing device, the master core dump file and the first slave core dump file into an assembled core dump file, wherein the assembling includes combining items of dumped data recorded in the master core dump file and the first slave core dump file, and adapting the general information of the assembled core dump file according to the combined items, wherein the assembled core dump file is analyzed by the first computing device for debugging the program running in the second computing device, wherein the generating the master core dump file and the one or more slave core dump files is trigged by at least one of the following events: a software-related failure or error in running the program; a hardware-related failure or error in running the program; at a scheduled checkpoint; following an instruction embedded in the program; and an input or interruption received by the second computing device; further comprising: determining, by the first computing device, if the assembled core dump file contains sufficient information for debugging the program running in the second computing device; if the assembled core dump file does not contain sufficient information for debugging the program running in the second computing device, selecting, by the first computing device, a second slave core dump file from the one or more slave core dump files according to information in the index list and obtaining the selected second slave core dump file; and updating, by the first computing device, the assembled core dump file to include information in the second slave core dump file, wherein the updated assembled core dump file is analyzed by the first computing device for debugging the program running in the second computing device, further comprising: repeating the process of: determining if the updated assembled core dump file contains sufficient information for debugging the program, obtaining subsequent slave core dump files if the updated assembled core dump file does not contain sufficient information for debugging the program, updating the assembled core dump file for debugging, until sufficient information for debugging the program has been obtained or until all slave core dump files generated by the second computing device are obtained. obtaining, by the first computing device, a master core dump file generated by the second computing device, wherein the master core dump file comprises an index list, each entry of the index list corresponds to a slave core dump file of one or more slave core dump files generated or to be generated by the second computing device, and wherein each of the one or more slave core dump files includes at least one item of dumped data related to the program; selecting, by the first computing device, a first slave core dump file from the one or more slave core dump files according to information in the index list; obtaining, by the first computing device, the selected first slave core dump file; and assembling, by the first computing device, the master core dump file and the first slave core dump file into an assembled core dump file, wherein the assembling includes combining items of dumped data recorded in the master core dump file and the first slave core dump file, and adapting the general information of the assembled core dump file according to the combined items, a software-related failure or error in running the program; a hardware-related failure or error in running the program; at a scheduled checkpoint; following an instruction embedded in the program; and determining, by the first computing device, if the assembled core dump file contains sufficient information for debugging the program running in the second computing device; if the assembled core dump file does not contain sufficient information for debugging the program running in the second computing device, selecting, by the first computing device, a second slave core dump file from the one or more slave core dump files according to information in the index list and obtaining the selected second slave core dump file; and updating, by the first computing device, the assembled core dump file to include information in the second slave core dump file,