void UpdateBreakpoints(DkmProcess process, LuaRemoteProcessData processData)
        {
            // Can't update breakpoints if we don't have the hook attached
            if (processData.locations == null)
            {
                return;
            }

            UpdateHooks(process, processData);

            int count = processData.activeBreakpoints.Count;

            if (count > 256)
            {
                count = 256;
            }

            ulong pointerSize = (ulong)DebugHelpers.GetPointerSize(process);

            ulong sourceNameAddress = processData.locations.helperBreakSourcesAddress;

            for (int i = 0; i < count; i++)
            {
                ulong dataAddress = processData.locations.helperBreakDataAddress + (ulong)i * 3 * pointerSize;

                var breakpoint = processData.activeBreakpoints[i];

                DebugHelpers.TryWritePointerVariable(process, dataAddress, (ulong)breakpoint.line);

                if (breakpoint.functionAddress == 0)
                {
                    Debug.Assert(breakpoint.source != null);

                    byte[] sourceNameBytes = Encoding.UTF8.GetBytes(breakpoint.source);

                    DebugHelpers.TryWriteRawBytes(process, sourceNameAddress, sourceNameBytes);
                    DebugHelpers.TryWriteByteVariable(process, sourceNameAddress + (ulong)sourceNameBytes.Length, 0);

                    ulong currSourceNameAddress = sourceNameAddress;
                    sourceNameAddress += (ulong)sourceNameBytes.Length + 1;

                    DebugHelpers.TryWritePointerVariable(process, dataAddress + pointerSize, 0);
                    DebugHelpers.TryWritePointerVariable(process, dataAddress + pointerSize * 2, currSourceNameAddress);
                }
                else
                {
                    DebugHelpers.TryWritePointerVariable(process, dataAddress + pointerSize, breakpoint.functionAddress);
                    DebugHelpers.TryWritePointerVariable(process, dataAddress + pointerSize * 2, 0);
                }
            }

            DebugHelpers.TryWriteIntVariable(process, processData.locations.helperBreakCountAddress, count);
        }