# Debugging and Profiling
Debugging is a critical step in any programming project. Debugging a mobile application can involve a mix of native tools, Studio features, and your own sleuthing abilities. In this chapter, we'll take a look at the processes and tools you can use to track down bugs in your code.
Debugging Overview — In this section, we will define a common base of concepts that you'll need in the subsequent sections in this chapter.
Native Android Debugging and Testing Tools — In this section, you will learn the basics of using the native tools included in the Android software development kit for troubleshooting Titanium projects.
Native iOS Debugging and Testing Tools — In this section, you will about the testing and debugging tools provided as part of the Xcode environment.
Debugging in Studio — In this section, you will learn how to debug your mobile applications using the tools provided by Studio. You'll learn how to use the Debug perspective, how to set breakpoints, run a project in debug mode, and how to step into, over, and return from functions.
Managing Memory and Finding Leaks — In this section, you will learn how to monitor for and solve memory leaks in your apps. The processes for monitoring memory usage varies by platform. You'll learn separately how to perform this feat on iOS, Android and Windows.
Build Test and Deploy a Titanium Cross-Platform App with Fastlane — This document will demonstrate one way to configure your environment to manage several build, test, and deployment tasks when developing apps with Titanium using Appium and Fastlane.