def lines(arch)
      lines        = Lines.new
      current_line = nil

      stdin, stdout, stderr = Open3.popen3('dwarfdump', '--debug-line', "--arch=#{arch}", @dsym)
      stdout.each_line do |line|
        if current_line
          if line =~ /^include_directories\[\s+(\d+)\] = '(.+)'$/
            current_line[:include_directories][$1] = $2
          elsif line =~ /^file_names\[\s*(\d+)\]\s+(\d+)\s+0x[0-9a-f]+\s+0x[0-9a-f]+\s+(.+)$/
            current_line[:file_names][$1] = current_line[:include_directories][$2] + '/' + $3
          elsif line =~ /^            (0x[0-9a-f]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+/
            path          = current_line[:file_names][$2]
            line          = $3.to_i
            col           = $4.to_i
            start_address = $1.hex
            path.sub!(/^#{Regexp.escape @project_dir}\//, '') if @project_dir
            lines.add start_address, path, line, col
          end
        else
          if line =~ /^debug_line\[0x[0-9a-f]+\]$/
            current_line = {
                :include_directories => {},
                :file_names          => {}
            }
          end
        end
      end

      return lines
    end
def lines(arch)
      lines        = Lines.new
      current_line = nil

      stdin, stdout, stderr = Open3.popen3('dwarfdump', '--debug-line', "--arch=#{arch}", @dsym)
      stdout.each_line do |line|
        if current_line
          if line =~ /^include_directories\[\s+(\d+)\] = '(.+)'$/
            current_line[:include_directories][$1] = $2
          elsif line =~ /^file_names\[\s*(\d+)\]\s+(\d+)\s+0x[0-9a-f]+\s+0x[0-9a-f]+\s+(.+)$/
            current_line[:file_names][$1] = current_line[:include_directories][$2] + '/' + $3
          elsif line =~ /^            (0x[0-9a-f]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+/
            path          = current_line[:file_names][$2]
            line          = $3.to_i
            col           = $4.to_i
            start_address = $1.hex
            path.sub!(/^#{Regexp.escape @project_dir}\//, '') if @project_dir
            lines.add start_address, path, line, col
          end
        else
          if line =~ /^debug_line\[0x[0-9a-f]+\]$/
            current_line = {
                :include_directories => {},
                :file_names          => {}
            }
          end
        end
      end

      return lines
    end
Extracts line number information from the dSYM.

 @param [String] arch The architecture to extract symbols for.
 @return [Symbols] The line info defined in the dSYM.
 @see #architectures