@@ -352,6 +352,26 @@ Ref<Settings> DbgEngTTDAdapterType::RegisterAdapterSettings()
352352 "readOnly" : false,
353353 "uiSelectionAction" : "file"
354354 })" );
355+ settings->RegisterSetting (" ttd.maxMemoryQueryResults" ,
356+ R"( {
357+ "title" : "Max Memory Query Results",
358+ "type" : "number",
359+ "default" : 100000,
360+ "minValue" : 0,
361+ "maxValue" : 18446744073709551615,
362+ "description" : "Maximum number of results to return from TTD Memory queries. Set to 0 for no limit.",
363+ "readOnly" : false
364+ })" );
365+ settings->RegisterSetting (" ttd.maxCallsQueryResults" ,
366+ R"( {
367+ "title" : "Max Calls Query Results",
368+ "type" : "number",
369+ "default" : 100000,
370+ "minValue" : 0,
371+ "maxValue" : 18446744073709551615,
372+ "description" : "Maximum number of results to return from TTD Calls queries. Set to 0 for no limit.",
373+ "readOnly" : false
374+ })" );
355375
356376 return settings;
357377}
@@ -678,10 +698,25 @@ bool DbgEngTTDAdapter::ParseTTDMemoryObjects(const std::string& expression, TTDM
678698 ComPtr<IModelObject> memoryObject;
679699 ComPtr<IKeyStore> metadataKeyStore;
680700
701+ // Get the max results setting
702+ auto adapterSettings = GetAdapterSettings ();
703+ BNSettingsScope scope = SettingsResourceScope;
704+ auto maxResults = adapterSettings->Get <uint64_t >(" ttd.maxMemoryQueryResults" , GetData (), &scope);
705+
706+ uint64_t resultCounter = 0 ;
707+ bool wasLimited = false ;
708+
681709 while (SUCCEEDED (iterator->GetNext (&memoryObject, 0 , nullptr , &metadataKeyStore)))
682710 {
683711 if (!memoryObject)
684712 break ;
713+
714+ // Check if we've reached the limit (0 means no limit)
715+ if (maxResults > 0 && resultCounter >= maxResults)
716+ {
717+ wasLimited = true ;
718+ break ;
719+ }
685720
686721 TTDMemoryEvent event;
687722
@@ -892,13 +927,21 @@ bool DbgEngTTDAdapter::ParseTTDMemoryObjects(const std::string& expression, TTDM
892927 }
893928
894929 events.push_back (event);
930+ resultCounter++;
895931
896932 // Reset objects for next iteration
897933 memoryObject.Reset ();
898934 metadataKeyStore.Reset ();
899935 }
900936
901- LogInfo (" Successfully parsed %zu TTD memory events from data model" , events.size ());
937+ if (wasLimited)
938+ {
939+ LogWarnF (" Successfully parsed {} TTD memory events from data model (limited by max results setting of {})" , events.size (), maxResults);
940+ }
941+ else
942+ {
943+ LogInfo (" Successfully parsed %zu TTD memory events from data model" , events.size ());
944+ }
902945 return true ;
903946 }
904947 catch (const std::exception& e)
@@ -1056,10 +1099,25 @@ bool DbgEngTTDAdapter::ParseTTDCallObjects(const std::string& expression, std::v
10561099 ComPtr<IModelObject> callObject;
10571100 ComPtr<IKeyStore> callMetadataKeyStore;
10581101
1102+ // Get the max results setting
1103+ auto adapterSettings = GetAdapterSettings ();
1104+ BNSettingsScope scope = SettingsResourceScope;
1105+ auto maxResults = adapterSettings->Get <uint64_t >(" ttd.maxCallsQueryResults" , GetData (), &scope);
1106+
1107+ uint64_t resultCounter = 0 ;
1108+ bool wasLimited = false ;
1109+
10591110 while (SUCCEEDED (iterator->GetNext (&callObject, 0 , nullptr , &callMetadataKeyStore)))
10601111 {
10611112 if (!callObject)
10621113 break ;
1114+
1115+ // Check if we've reached the limit (0 means no limit)
1116+ if (maxResults > 0 && resultCounter >= maxResults)
1117+ {
1118+ wasLimited = true ;
1119+ break ;
1120+ }
10631121
10641122 TTDCallEvent event;
10651123
@@ -1256,13 +1314,21 @@ bool DbgEngTTDAdapter::ParseTTDCallObjects(const std::string& expression, std::v
12561314 }
12571315
12581316 events.push_back (event);
1317+ resultCounter++;
12591318
12601319 // Reset objects for next iteration
12611320 callObject.Reset ();
12621321 callMetadataKeyStore.Reset ();
12631322 }
12641323
1265- LogInfo (" Successfully parsed %zu TTD call events from data model" , events.size ());
1324+ if (wasLimited)
1325+ {
1326+ LogWarnF (" Successfully parsed {} TTD call events from data model (limited by max results setting of {})" , events.size (), maxResults);
1327+ }
1328+ else
1329+ {
1330+ LogInfo (" Successfully parsed %zu TTD call events from data model" , events.size ());
1331+ }
12661332 return true ;
12671333 }
12681334 catch (const std::exception& e)
0 commit comments