コード例 #1
0
        public void GetFramesWithNoDebugInfoFrame()
        {
            _stackFramesProvider.GetRange(Arg.Any <enum_FRAMEINFO_FLAGS>(), Arg.Any <IDebugThread>(),
                                          0, 1).Returns(new List <FRAMEINFO>
            {
                new FRAMEINFO {
                    m_bstrFuncName = $"libFunc()", m_fHasDebugInfo = 0
                }
            });
            _stackFramesProvider.GetRange(Arg.Any <enum_FRAMEINFO_FLAGS>(), Arg.Any <IDebugThread>(),
                                          1, 1).Returns(new List <FRAMEINFO>
            {
                new FRAMEINFO {
                    m_bstrFuncName = $"mainFunc()", m_fHasDebugInfo = 1
                }
            });
            uint numFetched = 0;

            FRAMEINFO[] results = new FRAMEINFO[1];
            _frameInfoEnum.Next(1, results, ref numFetched);

            int result = _frameInfoEnum.Next(1, results, ref numFetched);

            Assert.That(result, Is.EqualTo(VSConstants.S_OK));
            Assert.That(numFetched, Is.EqualTo(1));
            Assert.That(results[0].m_bstrFuncName, Is.EqualTo("mainFunc()"));
        }
コード例 #2
0
        public void EnumFrameInfoTest()
        {
            RemoteThread mockThread  = Substitute.For <RemoteThread>();
            IDebugThread debugThread = CreateDebugThread <IDebugThread>(mockThread);

            IList <FRAMEINFO> framesList = new List <FRAMEINFO>
            {
                new FRAMEINFO {
                    m_bstrFuncName = "func1"
                },
                new FRAMEINFO {
                    m_bstrFuncName = "func2"
                }
            };

            _stackFramesProvider.GetRange(Arg.Any <enum_FRAMEINFO_FLAGS>(), debugThread.Self,
                                          0, uint.MaxValue).Returns(framesList);

            IEnumDebugFrameInfo2 enumDebugFrameInfo2;
            int result = debugThread.EnumFrameInfo(
                enum_FRAMEINFO_FLAGS.FIF_ARGS, 10, out enumDebugFrameInfo2);

            _stackFramesProvider.ReceivedWithAnyArgs(0)
            .GetRange(Arg.Any <enum_FRAMEINFO_FLAGS>(), Arg.Any <IDebugThread>(),
                      Arg.Any <uint>(), Arg.Any <uint>());
            Assert.That(result, Is.EqualTo(VSConstants.S_OK));
            Assert.IsNotNull(enumDebugFrameInfo2);
            uint count;

            Assert.That(enumDebugFrameInfo2.GetCount(out count), Is.EqualTo(VSConstants.S_OK));
            Assert.That(count, Is.EqualTo(2));
            _stackFramesProvider.ReceivedWithAnyArgs(1).GetRange(
                Arg.Any <enum_FRAMEINFO_FLAGS>(), Arg.Any <IDebugThread>(), 0, uint.MaxValue);
        }
コード例 #3
0
        /// <summary>
        /// Loads all frames.
        /// </summary>
        /// <returns>True if successful, otherwise false.</returns>
        bool LoadAll()
        {
            if (EndOfStackReached)
            {
                return(true);
            }

            IList <FRAMEINFO> loadedFrames = _stackFramesProvider.GetRange(
                _fieldSpec, _debugThread, (uint)_data.Count, uint.MaxValue);

            if (loadedFrames == null)
            {
                return(false);
            }

            _data.AddRange(loadedFrames);
            _allStacksLoaded = true;
            return(true);
        }
コード例 #4
0
        public void GetRangeFirstFrame()
        {
            SetupActualNumberOfFrames(5);

            IList <FRAMEINFO> frames = _stackFramesProvider.GetRange(_fieldSpec, _debugThread, 0, 1);

            _remoteThread.Received(1).GetFramesWithInfo((FrameInfoFlags)_fieldSpec, 0, 1);
            Assert.IsNotNull(frames);
            Assert.That(frames.Count, Is.EqualTo(1));
            Assert.That(frames[0].m_bstrFuncName, Is.EqualTo("Func0"));
        }