A method for debugging JavaScript code and other code that is compiled into JavaScript in a computer system, the method comprising: receiving user inputs designating one or more files of the JavaScript code as library code; and performing debugging operations on the JavaScript code, the debugging operations including a stepping operation for stepping through the JavaScript code to identify errors only in user-generated files of the JavaScript code, wherein the user-generated files correspond to code that was not designated as library code; performing a stepping action by a debugger, the stepping action executing a next code statement by a script engine; and if the executed statement is library code, instructing the script engine to step to a document boundary; wherein the one or more files of the JavaScript code are separate files (601,602,603,604) that are compiled into a single file, wherein a source map is used to identify document boundaries within said compiled file, the separate files written in JavaScript or other programming languages; wherein the source map is generated when the JavaScript is built for production, comprising library and user generated original JavaScript files to be minified, so that the underlying code is obfuscated and made unreadable to a developer, and combined into a production file and wherein the source map is arranged to hold information about the library and user generated original JavaScript files, wherein the source map is arranged to provide a way to map a combined and minified file back to an unbuilt state; wherein, when a developer queries a certain line and column number in the production file, the debugger does a lookup in the source map to determine the original location and the debugger parses the source map automatically and makes it appear as though it is running unminified and uncombined files and the source map information is used to determine document boundaries for the step to document boundary action. receiving user inputs designating one or more files of the JavaScript code as library code; and performing debugging operations on the JavaScript code, the debugging operations including a stepping operation for stepping through the JavaScript code to identify errors only in user-generated files of the JavaScript code, wherein the user-generated files correspond to code that was not designated as library code; performing a stepping action by a debugger, the stepping action executing a next code statement by a script engine; and if the executed statement is library code, instructing the script engine to step to a document boundary; wherein the one or more files of the JavaScript code are separate files (601,602,603,604) that are compiled into a single file, wherein a source map is used to identify document boundaries within said compiled file, the separate files written in JavaScript or other programming languages; wherein the source map is generated when the JavaScript is built for production, comprising library and user generated original JavaScript files to be minified, so that the underlying code is obfuscated and made unreadable to a developer, and combined into a production file and wherein the source map is arranged to hold information about the library and user generated original JavaScript files, wherein the source map is arranged to provide a way to map a combined and minified file back to an unbuilt state; wherein, when a developer queries a certain line and column number in the production file, the debugger does a lookup in the source map to determine the original location and the debugger parses the source map automatically and makes it appear as though it is running unminified and uncombined files and the source map information is used to determine document boundaries for the step to document boundary action.