1. A program debugging method of debugging a memory access to memory areas which are ensured and used in the unit of segments during the execution of a program, comprising: changing only addresses allocated to said segments among the addresses of said memory areas to change the arrangement of said segments; executing said program in which the arrangement of said segments is changed, tracing memory accesses involved in the execution of said program to obtain reference addresses referred to by said memory access, and obtaining at least one of execution results indicating the execution results of said program, the numbers of accesses indicating the numbers of times said memory access is performed, and execution orders indicating the orders in which a plurality of execution commands included in said program is executed; analyzing said execution results to determine whether at least one of a plurality of execution results obtained by performing said allocating of the addresses and said executing of the program plural times, said numbers of accesses, and said execution orders are the same in all executions; and analyzing said reference addresses of a memory access to be analyzed according to an execution command, which is an analysis target, among a plurality of execution commands and determining whether said memory access to be analyzed is valid, when it is determined that at least one of said plurality of execution results, said numbers of accesses, and said execution orders are the same in all executions in said analyzing of the execution result.